function Person(){
//console.log("aaaaa");
};
var p1=new Person();
...
...
var pN=new Person();
针对上面的代码,p是实例,Person是构造函数,梳理后,如下理解可以么?
1.不管是实例(pN),还是函数(Person),其属性(__proto__或者prototype)始终指向函数的原型(Person.prototype)
2.不管是实例(pN),还是函数原型(Person.prototype),其构造函数(constructor)都是指函数本身(Person)
也就是,原型属性就是指向原型对象
constructor属性,就是构造函数本身
(说了半天好像都是废话,对我个人而言,感觉之前看的迷迷糊糊,现在终于有点开窍了)
__proto__
跟prototype
完全不是一回事。__proto__
是用于查找属性的原型链。prototype
是构造函数的属性,它是构造函数生成的新对象的__proto__
。pN.__proto__ === Person.prototype
pN
作为实例,没有prototype
属性,也没有construtor
属性。Person.prototype.constructor === Person
https://segmentfault.com/a/11... 可供参考。