Как переопределить возвращаемый javascript метод IIFE в объекте?
У меня есть один контент IIFE, который выглядит так:
var A = (function() {
var method1 = function() {
alert("PARENT METHOD");
}
var method2 = function() {
method1();
}
return {
method1: method1,
method2: method2
}
})();
Я хочу переопределить этот метод1 в другом объекте javascript таким образом, чтобы этот метод2 выполнялся, тогда он будет вызывать переопределенный метод1, а не этот оригинальный метод1. Заранее спасибо.
2 ответа
Решение
Вам нужно будет использовать прототип, чтобы выполнить это так, как вам бы хотелось. Посмотрите на пример ниже.
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();
Если я понимаю, что вы спрашиваете, вы можете просто установить значение method2
(в вашем объекте API) переопределенному методу (B
"s method1
в этом примере). поскольку A
создается с использованием IIFE, объект, содержащий переопределенный метод, должен быть объявлен до A
или вы получите ошибку ссылки.
var B = {
method1: function() {
console.log('This is method2 in B!');
}
}
var A = (function() {
var method1 = function() {
alert("PARENT METHOD");
}
var method2 = function() {
method1();
}
return {
method1: method1,
method2: B.method1
}
})();
//call A.method2
A.method2();