2013-11-23 30 views
0

道歉传递的对象的方法,如果标题是不太清楚:)的Javascript:允许作为一个参数进入公共方法

我传递一个对象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

回答

3

在你的O_method1定义,你调用属于一个方法,而不引用A.如果你改变O_method1的定义:

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

预期它将工作。

+0

快速查找+1上 – sachinjain024

+0

感谢您的支持。它并不完全解决我的现实世界的问题,但这里完全是正确的解决方案:) – Nick

+0

没问题。你现实世界的问题是什么? – Default

相关问题