Javascript构造函数和原型问题

时间:2014-03-12 12:34:05

标签: javascript object prototype

我有以下代码,我很困惑为什么当我定义属性'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);

1 个答案:

答案 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