为什么第一个例子可以修改原型链中的值,而第二个不可以?
此题和下面这个链接应该是同一原理吧,可我没太看明白
关于Object.create()与原型链的面试题?
有同学回答是原型链的原因,有同学说是引用的问题,求解?
var fun = function () {
};
fun.prototype = {
info: {
name: 'peter',
age: 25
}
};
var a = new fun();
var b = new fun();
a.info.name = 'jack';
b.info.name = 'tom';
console.log(a.info.name)//tom
console.log(b.info.name)//tom
var fun = function () {
}
fun.prototype = {
name: 'peter',
age: 25
}
var a = new fun();
var b = new fun();
a.name = 'jack';
b.name = 'tom';
console.log(a.name)//jack
console.log(b.name)//tom
因为第二个你实际上是在
a
和b
对象上都添加了name
属性,你看看a.__proto__.name
就知道了。第一个则是修改的prototype
。