Javascript构造函数和原型问题

Javascript constructor and prototype issue

本文关键字:问题 原型 构造函数 Javascript      更新时间:2023-09-26

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

因为你做了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