我有一个IIFE内容,看起来像这样:
var A = (function() {
var method1 = function() {
alert("PARENT METHOD");
}
var method2 = function() {
method1();
}
return {
method1: method1,
method2: method2
}
})();
我想在执行此method2时以某种方式在另一个javascript对象中覆盖此method1,然后它将调用覆盖的method1,而不是此原始method1。预先感谢。
答案 0 :(得分:1)
如果我了解您的要求,则可以将method2
(在您的API对象中)的值设置为覆盖的方法(在此示例中为B
的{{1}} )。由于method1
是使用IIFE创建的,因此必须在A
之前声明包含重写方法的对象,否则您将收到引用错误。
A
答案 1 :(得分:0)
您将需要使用原型才能以所需的方式完成此操作。看下面的例子。
var A = (function() {
var api = function(){}
api.prototype.method1 = function() {
console.log("PARENT METHOD");
}
api.prototype.method2 = function() {
this.method1();
}
return new api();
})();
A.method2();
A.method1 = function() { console.log('child method');}
A.method2();