は、のは、私が名前空間を持っているとしましょう。この名前空間で関数Aを同じ名前空間内の関数Bから呼び出す方法は?
var Namespace = {
A : function() {
alert('Hello!');
},
B : function() {
// Call A() from here, do other stuff
}
}
Aが言うことであるB.へのヘルパー関数であるために、私は(A、予定の)名前空間の外に呼び出されることはありません。名前空間内の関数によってのみ呼び出されます。
名前空間内のローカル/ヘルパー機能の問題を解決する最良の方法は何ですか?私は二つの可能性がある、それを見る方法:第1の方法では
// 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();
は、名前空間内のすべての機能にNamespace.A()(繰り返し)を入力するために醜いとawkardです。これは方法2を好むようになる。しかし、私はここでベストプラクティスが何か不思議でした。あなたが唯一の理由ではないB
の内側にそれを定義し、B
内部A
を使用する場合
これは素晴らしい解決策です。私の質問は、あなたがそれにアクセスするたびにNamespaceはその機能を再定義しますか?もしそうなら、それは記憶の悪い使用であろう。 – ktm5124
@ ktm5124:いいえ。関数はすぐに実行され、オブジェクト 'self'が' Namespace'に割り当てられます。 – Hubro
@Codemonkeyの場合、複数の 'Namespace'オブジェクトを作ることはできません。 – Neal