![[day6]工厂函数,构造函数,对象,数组,函数,面向对象编程,第1张 [day6]工厂函数,构造函数,对象,数组,函数,面向对象编程,第1张](/aiimages/%5Bday6%5D%E5%B7%A5%E5%8E%82%E5%87%BD%E6%95%B0%EF%BC%8C%E6%9E%84%E9%80%A0%E5%87%BD%E6%95%B0%EF%BC%8C%E5%AF%B9%E8%B1%A1%EF%BC%8C%E6%95%B0%E7%BB%84%EF%BC%8C%E5%87%BD%E6%95%B0%EF%BC%8C%E9%9D%A2%E5%90%91%E5%AF%B9%E8%B1%A1%E7%BC%96%E7%A8%8B.png)
重复代码的复用常用:for/functon。
1.工厂函数(一种设计模式):工厂函数在打印对象时,对象的类型都是object类型。function createStudent(name,age,height) {
var stu = {} // 创建对象
stu.name = name
stu.age = age
stu.height = height
stu.running = function() {
console.log("running")
}
return stu
}
var stu1 = creatStudent("why",18,1.88)
var stu2 = creatStudent("kobe",30,1.98)
var stu3 = creatStudent("james",35,2.05)
// 创建新的对象并传入参数
2.New *** 作符,这种函数也称为构造函数
funtion Coder (name,age,height) {
// 删除此行,为了防止stu不存在报错,this一般会指向某个对象。目前是被指向window的,但被调用时候,会自动指向调用来源。 // 删除此行,也需要用new来补充创建新对象的功能。
this.name = name // 改成this。
this.age = age
this.height = height
this.rinning = funcition () {
console.log("running")
}
//删除了返回行
} // 构造函数
new *** 作符:调用了函数,创建了空对象,指明了this,并进行了返回。
CLASS ↑类(图纸,描述,模板):图纸实体不存在。调用方式,用new来调用。
-------------------------------------------------
OBJECT ↓对象(房子) 实例对象
对象是由类创建出来的,根据类创建出具体的对象
var stu 1 = new Coder ("why",18,1.88) //在函数调用前加new关键字,为 *** 作符,有4种作用。
console.log(stu1)
类方法:类调用的
对象方法=实例方法吗,实例方法就是对象调用的 √√√
New *** 作符
创建一个空的对象
将构造函数的this指向这个空的对象
执行函数体中的代码
默认返回创建出来的这个对象
3.构造函数为什么是面向对象的?工厂函数的弊端,打印出来的都是object类型的。
构造函数也称之为构造器(construnctor),通常是在创建对象时会调用的函数。(以前的函数一般都是完成功能。构造函数是用来创建对象)
在其他面向的编程语言里面,构造函数存在于类中,称为构造方法。
JS中构造函数扮演了其他语言中类的作用。
系统默认提供的Date的函数是Dateconstrutor。构造函数可以通过function和new两种方式调用。
在ES5之前,都是用function来声明一个构造函数(类),之后通过new关键字来对其进行调用。ES6后用class来声明一个类。
WHY:
1.这种方法称为面对对象编程,但是JS是多范式编程,可以使用函数式编程,面对对象编程,声明式编程。
2.前端经常使用服务器返回的对象列表,往往进行遍历即可,创建新对象的情况较少。
3.在react里进行组件化开发,早期封装组件都是用class开发的,现在reacthook里更多使用function。
4.对象包括对象是一种数据类型
常用的基本数据类型包括undefined、null、number、boolean、string;
引用数据类型也就是对象类型,比如内置对象,全局对象,自定义对象,内置对象包括Object、array、function、data等。
1.内置对象:Math, Date, Array, String,Function等。
var foo = function(){} 函数表达式就是创建对象的模式
因为var obj = {}创建对象和new Object()都是在堆内存创建一个新的对象,本质相同,则函数即可写成:
var foo = function(){}
var foo = new Function{}
则function也是对象。
因为函数也是对象,即可通过类似于
var info = {}
info.name = "abc"
这种方法给函数添加属性
funciton sayHello(){
}
sayHello.age = 18
console.log(sayHEllo.age)
还可以用这种方法给函数的属性添加方法(对象内的函数)。
function Dog(){
}
Dog.running = function(){}
Dog.running() //用类名(构造函数的名字)调用的函数
这种往构造函数(?)上添加函数的方法叫做类方法。
2.浏览器对象(全局对象):
window 对象是最顶层的对象;查找对象时,最终会查找到window上;将一些浏览器全局给我们提供的属性/对象/变量都放在window上面;在创建对象时,var obj = new Object时,这个Object也是在Window上定义的;使用var定义的变量会被添加到window上面。
window 对象有6大属性,包括:document、frames、history、location、navigator、screen,这6大属性本身也是对象;
window 对象下的 document 属性也是对象,并且 document 下也有5大属性(anchors、forms、images、links、location)也是对象。
3.自定义对象
5.面向对象编程和面向函数编程 6.数组,对象,函数对象是一种数据类型。
函数是一种对象。
数组是一种对象。数组是一种特殊类型的对象。 在 JavaScript 中对数组使用 typeof 运算符会返回 “object”。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)