我有以下代码,我很困惑为什么当我定义属性'name'的原型时,它出现为'40'而不是'fred'? javascript里面发生了什么?这似乎是一个简单的问题,但我很困惑。谢谢!
function Product(id){
this.id = id
this.name = id + 20
}
Product.prototype.name = 'fred';
var p = new Product(20);
console.log(p.name);
答案 0 :(得分:1)
因为你做了this.name = id + 20
。
p.name
将首先在实例中找到name
属性,如果找不到,则尝试在原型中查找。
function Product(id){
this.id = id
}
Product.prototype.name = 'fred';
var p = new Product(20);
console.log(p.name); // then it will be fred