对象
1、对象:无需属性的集合,属性可包含基本值、对象或者函数
创建对象 var obj = new Object() ;
2、工厂模式:创建一种函数模型(反正不好用);
ps:他跟构造函数的区别:
1.首字母小写
2.函数中没有使用this
3.使用的时候没有用new
3、构造函数模式:也是一种函数模型。
创建对象时要用new。
基本写法:function Student(name) {
this.name = name;
this.playComputerGame = function() {
};
this.sleepy = function() {
console.info(this.name);
};
}
缺点:每次调用的时候都会重新创建一遍方法,会导致通方法不同的作用链和方法解析,占内存。
优化一下:把方法定义到构造函数外面。
function Student(name) {
this.name = name;
this.sleepy = sleepy()
}
function sleepy() {
console.info(this.name);
};
4、原型模式:prototype是构造函数对象的属性,它指向了一个对象(就是一个引用),它指向的这个对象中的所有的属性跟方法,是每个实例所公用。
写法:function Person() {
}
Person.prototype.name = "小二狗"; --------->添加原型属性
var p1 = new Person();
console.info(p1.name); --------> 实例调用
5、原型链:找东西,一层一层往上扒。
6、构造原型方式:创建类
1.属性全部放在构造函数里面
2.方法写在外面(prototype)
7、原型链继承:New.prototype = new Old(); 新的函数继承旧的函数原型类型。
8、借用构造函数和组合继承都是套路(组合继承时注意新的方法必须写在继承之后)。