JavaScript原型的理解
1.对象:自身属性;构造器属性(constructor);原型(__proto__)
2.函数(构造方法):自身属性;构造器属性(constructor);原型属性(prototype);原型(__proto__)
3.对象.原型(__proto__) === 函数(构造方法).原型属性(prototype)
4.对象.构造器属性 === 函数(构造方法)
5.每个函数都有一个原型属性,不管是构造函数还是普通函数,函数的原型属性与函数的原型不是同一个概念,怎么理解呢?当说到函数的原型属性时,此时函数的定位就是函数,
每个函数都会有一个原型属性;当说到函数的原型时,此时函数的定位是一个对象(函数也是一个对象),而对象会有一个自己的原型。特别地,当函数是构造器函数时,函数的原型属性就等于该函数构造的对象(或者叫实例)的原型。
6.假设有个构造函数A(),var a = new A(),此时A.prototype===a__proto__===a.constructor.prototype,但是当把构造函数A的原型属性完全换成一个新的对象时,这时请注意,在这次替换之前就已经创建的实例a,a的原型任然指向原来的A的原型属性(是一个对象);如下:
1 var A = function(name) { 2 this.name = name; 3 } 4 var a = new A('alpha'); 5 a.name; //'alpha' 6 A.prototype = {x:23}; 7 a.x; //null
7.更详细的了解原型JavaScript原型
厚积薄发