2013-11-23 48 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

相關問題