// 1
var Person = function(){
}
Person.level = 1;
Person.prototype.name = "None";
Person.prototype.age = "None";
Person.prototype.arr = new Array(1,2);
var M1 = new Person;
var M2 = new Person;
M1.name = "ZHANG";
M1.arr.push(3);
console.log(M1.arr +" " +M2.arr);// output : 1,2,3 1,2,3
// 2
function Human(){
this.arr = new Array(1,2);
}
var p1 = new Human();
var p2 = new Human();
p1.arr.push(3);
console.log(p1.arr +" " +p2.arr);// output : 1,2,3 1,2
方式1原型继承的arr存储的是数组的引用,导致M1修改后,M2也变了。可是为什么用方式2,改p1.arr却不会影响p2.arr,方式2中存的不是数组的引用吗?
还有看了很多继承的资料,还是不太清楚prototype , __proto__ , constructor之间的关系,大神们能不能帮我理一理他们之间的关系,用实例讲解一下他们之间的继承用法。
http://www.ruanyifeng.com/blog/2011/06/designing_ideas_of_inheritance_mechanism_in_javascript.html
推荐个文章给你看
"现在,species属性放在prototype对象里,是两个实例对象共享的。只要修改了prototype对象,就会同时影响到两个实例对象。"这句话,不难理解吧?