这样理解原型对象和构造函数对不对?

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属性,就是构造函数本身
(说了半天好像都是废话,对我个人而言,感觉之前看的迷迷糊糊,现在终于有点开窍了)

阅读 1.6k
2 个回答

__proto__prototype 完全不是一回事。

__proto__ 是用于查找属性的原型链。

prototype 是构造函数的属性,它是构造函数生成的新对象的 __proto__

pN.__proto__ === Person.prototype

pN 作为实例,没有 prototype 属性,也没有 construtor 属性。

Person.prototype.constructor === Person

https://segmentfault.com/a/11... 可供参考。

  • __proto__ 是对象和函数都有的,这是原型链
  • prototype 是只有函数才有的 指向他的原型对象
  • constructor 是原型对象上的属性,指向他的构造函数
推荐问题
宣传栏