如果我创建一个基本对象并在其中声明一个函数,则稍后使用它的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,从而覆盖您在原型上指定的内容。

09-27 21:57