Javascript:允许将对象的方法作为参数传递给公共方法

时间:2013-11-23 01:35:20

标签: javascript function arguments

如果标题不太明确,请道歉:)

我将对象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

1 个答案:

答案 0 :(得分:3)

O_method1的定义中,您调用属于A的方法,而不引用A.如果您将O_method1的定义更改为:

O_method1: function (text) {
  return A.A_public1(text);
}

它将按预期工作。