原型概念
原型是什么?
原型对象是构造函数在编译阶段,由系统为我们创建出来的一个对象。
执行构造函数代码时,js系统会给这个构造函数创建⼀个原型对象,构造函数中也包含一个prototype属性指向这个原型对象。
原型可以做什么?
1.通过原型对象可以给系统构造函数添加相关的方法和属性(如,数组元素的求和),这样所有通过该类型创建的对象都具有这些自定义的方法和属性。
2.通过原型也可以给自定义的构造函数添加属性、方法,创建出来的对象所对应的属性、方法就是原型中的属性、方法,不需要新开辟内存空间,节约了内存。
原型相关属性、函数
原型属性:通过原型添加在构造函数中的属性
原型方法:通过原型添加在构造函数中的函数
实例属性:直接写在构造函数中的属性
实例方法:直接写在构造函数中的函数
__proto__ / [[prototype]]、constructor、prototype几个属性的含义
__proto__:实例对象中的原型属性,指向创造它的构造函数对应的原型对象(我们无法访问到这个属性)。
constructor:构造函数所对应的原型对象中的⼀个属性,用来指向这个对象所对应的构造函数。
构造函数创建出来的对象也有这个属性,同样指向该对象的构造函数
prototype:构造函数中的⼀个属性,指向他所对应的原型对象
in的使用说明
in运算符可以用来判断,某个对象是否含有某个属性,不管是不是实例属性,返回值是boolean类型,true/false
语法:属性名字符串in对象名;
hasOwnProperty的使用
每个实例对象都有一个hasOwnProperty()方法,用来判断某一个属性到底是实例属性,还是继承自prototype对象的属性。返回值boolean类型。
语法:对象名.hasOwnProperty(属性名字符串);
使用字面量的方式创建对象以及解决constructor问题
使用构造函数创建的对象的constructor属性指向他的构造函数,使用字面量创建的对象的constructor属性指向Object。
动态原型模式
将独立的构造函数与其原型对象结合在一起,在构造函数里初始化原型,为其添加方法。
复习资料料:
http://www.cnblogs.com/asqq/archive/2013/02/01/3194993.html