本人正在学习js中,看到js原型这个概念,说道函数原型是共享的,
function Person(){ this.id = 9527; }; Person.prototype = { name : "张三", age : 26, getName : function(){ alert(this.name); return this.name; } } var f1 = new Person(); var f2 = new Person(); f2.name = "李四"; 例如这段代码,为什么f2的name属性修改后,f1的name属性值还是张三呢,
原型属性不是共享的吗
f2.name = "李四";
这个相当于
this.name="李四";//(f2)
而不是
Person.prototype.name="李四";
共享的概念是如果没有this.name 赋值,那么this.name 引用prototype.name;
Person.prototype.name="李四"//那么都是李四;
上面代码改一下;
function Person() {
this.id = 9527;
this.name="sad";
};
Person.prototype = {
name: "张三",
age: 26,
getName: function () {
alert(this.name);
return this.name;
}
}
var f1 = new Person();
var f2 = new Person();
Person.prototype.name = "李四";
f2.getName();//sad
f1.getName();//sad
应该能明白了.