比方說,我有命名空間,如何在同一個命名空間內從函數B調用函數A?
var Namespace = {
A : function() {
alert('Hello!');
},
B : function() {
// Call A() from here, do other stuff
}
}
在這個命名空間,我打算讓一個是一個輔助函數B.也就是說,A()將永遠不會空間外面叫。它只會被名稱空間內的函數調用。
解決名稱空間內本地/幫助函數問題的最佳方法是什麼?我看到它的方式有兩種可能性:
// Method #1
var Namespace = {
A: function() {
alert('Method #1');
},
B : function() {
Namespace.A();
}
}
Namespace.B();
// Method #2
function Namespace2() {
var A = function() {
alert('Method #2');
};
this.B = function() {
A();
}
}
var ns2 = new Namespace2();
ns2.B();
在第一種方法,它是醜陋和awkard在命名空間內的每一個功能型Namespace.A()(反覆)。這使我更喜歡方法2。但我很好奇這裏的最佳做法。
這是一個不錯的解決方案。我的問題是,命名空間是否在您每次訪問時都重新定義其功能?如果是這樣,這將是一個糟糕的內存使用。 – ktm5124
@ ktm5124:否。函數立即運行,對象'self'分配給'Namespace'。 – Hubro
@Codemonkey在你的情況下你不能創建多個'Namespace'對象。 – Neal