原型继承。。对上篇疑问处进行解答

之前我一直在疑问

function DOG(name){this.name = name;}
DOG.prototype = { species : '犬科' };
var dogA = new DOG('大毛');
var dogB = new DOG('二毛');
alert(dogA.species); // 犬科
alert(dogB.species); // 犬科

为什么这样是可行的,而为什么不行

function DOG(name){this.name = name;}
var dogA = new DOG('大毛');
var dogB = new DOG('二毛');
DOG.prototype = { species : '犬科' };
alert(dogA.species); // 犬科
alert(dogB.species); // 犬科

然后今天看别的资料偶然发现,创建实例的时候对实例的原型进行赋值引用变量,如果之后我修改构造器的原型的属性可以对实例有效果,但是如果直接替换了原型对象,则已经生成的实例不再受构造器的原型的影响。

如果用下面这段代码 可以更好的理解

var a = {name:'123'};
var b = a;
a = {};
a.age = 123;
console.log(b.age)// undefined

你可能感兴趣的:(原型继承。。对上篇疑问处进行解答)