在下面的示例中,我希望 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/