function Person() {}
Person.prototype.name = 'Nicholas';
const p1 = new Person();
console.log(p1.name); // Nicholas
p1.name = 'Greg';
console.log(p1.__proto__.name); // Nicholas
// 为什么上面输出不是 'Greg'
代码如上。name属性是在构造函数Person的原型上的。当我实例化p1时,修改了name的值,因为p1实例本身没有name属性,所以就会去原型上找。而p1实例对原型是一种引用,所以按照正常逻辑,不应该原型上的name属性也会被修改吗?
相关分类