如果我创建一个基本对象并在其中声明一个函数,则稍后使用它的prototype属性覆盖原始函数定义-不会发生任何事情。原始功能定义保持不变。我想要一个经验丰富的JavaScript开发人员来解释为什么这行不通。我似乎找不到搜索Google的正确信息。
这是我用于测试此假设的代码。
//Object definition
function Apple(type) {
this.color = "red";
this.getInfo = function() {
console.log("Called getInfo() from inside Apple - original");
}
}
//over write getInfo() -- dosn't work
Apple.prototype.getInfo = function() {
console.log("Apple getInfo called - prototype override");
};
a = new Apple();
a.getInfo();
最佳答案
因为当您调用new Apple()
时,将调用构造函数中原始的this.getInfo = function
,从而覆盖您在原型上指定的内容。