如果标题不太明确,请道歉:)
我将对象O
(有方法)传递给函数A
(具有私有函数和公共方法)。我可以给O
调用任何A
方法的能力吗?
所以:
var O = {
O_method1: function (text) {
return A_public1(text);
}
},
A = (function (O) {
function A_private1(text) {
return O.O_method1(text);
}
return {
A_public1: function (text) {
return text + " else";
},
A_public2: function (text) {
return A_private1(text);
}
};
}(O));
alert (A.A_public2("something"));
所以在这里,A
接收O
作为参数。致A_public2
的来电调用A_private1
,调用O_method1
作为A
的参数。到目前为止没问题。但是,O_method1
尝试调用A_public1
,但无法看到它。如何启用最后一次通话?
Firebug中的错误是:ReferenceError: A_public1 is not defined
。
答案 0 :(得分:3)
在O_method1
的定义中,您调用属于A的方法,而不引用A.如果您将O_method1
的定义更改为:
O_method1: function (text) {
return A.A_public1(text);
}
它将按预期工作。