function Person() { }
Person.prototype.friend = [];
var a = new Person();
a.friend[0] = "杨";
var b = new Person();
console.log("b", b.friend) // ["杨"]
b.friend 打印出来为什么是["杨"]?而不是 []
了解这个问题前 先看以下代码。
let obj = {};
obj.a[0] = "杨"
// 报 Cannot set property '0' of undefined 错误
所以 此时a的实例, 并没有找到a.friend[0],就会往a..__proto__ 上去找这个属性,把原型对象的friend=[],改成了 friend=["杨"];
所以 b.friend 实例找不到friend 属性,会访问原型对象上的 b.friend