javascript - 如何在javascript中使用原型(prototype)覆盖函数?

标签 javascript prototype

在下面的示例中,我希望 createProduct 函数将被覆盖。但是结果是错误的。

var AbstractFactory = function(){
  this.createProduct = function(){
    throw new Error("The createProduct() method has not been implemented.");
  }
}

AbstractFactory.prototype.createProduct = function(){
  console.log('The method has been overwriten successfully');
};

var factory = new AbstractFactory();
factory.createProduct();

最佳答案

属性的搜索从对象本身开始,只有当没有找到属性时才会检查原型(prototype)。因此,在您的“工厂”对象上找到的第一个“createProduct”函数是错误函数。如果您以其他顺序初始化对象和原型(prototype),那么您将获得预期的结果。

请注意,原型(prototype)对象上的属性不会导致使用构造函数创建的实例对象上出现属性。

关于javascript - 如何在javascript中使用原型(prototype)覆盖函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18109291/

相关文章:

javascript - 如何在带有 Ajax 和 JSON 的 JavaScript 中使用 v3 URL API 获取 Youtube 视频标题

javascript - 什么会导致 html 和脚本在 for 循环的迭代中表现不同?

javascript - 什么是 jQuery 与 Ajax.Request 以及 onSuccess 和 onComplete 的等价物?

Javascript 不调用原型(prototype)方法

javascript - jquery 替换 html 和 javascript 函数

javascript - Z-index 似乎没有任何改变

JavaScript 继承问题

javascript 通过避免使用新关键字来创建新对象

javascript - node.js 中对象的方法和属性之间的区别

Javascript 原型(prototype)继承 : problem when parent and child receive same object as argument?