这是构造函数和构造函数的 prototype 之间的关系
Person.prototype.constructor === Person; // true
那么对 Person 创立的实例对象 p1
p1.__proto__.constructor === Person; // true
在浏览器控制台中输出如下代码
function Person(name) {this.name = name;}
Person.prototype.sayHello = function() {console.log(`Hello, ${this.name}!`);
}
const p1 = new Person("Mike"); // 实例对象 p1
console.log("p1->", p1)
查看输入
实例对象 p1 有一个外部属性 [[Prototype]], 其用于寄存该对象对应的_proto。
对象的外部属性 [[Prototype]] 是无奈被间接拜访的,须要通过 p1.__proto__属性或者 Object.getPrototypeOf(p1)办法来拜访。
开展 p1 的[[Prototype]]
(p1.__proto__ === Person.prototype 实际上看的是 Person 的 prototype 属性)
橙框中是 Person.prototype
再看上来
能够看到蓝框中咱们本人定义的 sayHello 办法。
也能够看到 Person.prototype.constructor 指向 Person 自身。
还能看到 Person.prototype.__proto__ 这个属性指向 Object.prototype
其余:
console.log(“Person.__proto__->”, Person.__proto__)
同步更新到本人的语雀:
https://www.yuque.com/dirackeeko/blog/gpbe3gy7zcyc6l0l