/ つのjQuery関数を1つの関数にまとめることに関する質問

単一の関数内でのjQuery関数の整理に関する質問 - javascript、jquery

私は「人々が自分の中にたくさんの呼び出し可能な関数を置くことが時々気づいた。 $(function() { ...here... }); ブロック。 2つのオブジェクトが別々のjQueryコードブロック内にある場合、命名の衝突は問題にならないようです。

私の考えは正しいですか?これは大きな利点のようです。

しかし、私はこのアプローチを取ったので、私の関数の1つを他のjQueryコードブロックから呼び出し可能にする必要があります。だから私はコードブロックの外側に関数を移動することができますが、それはコードブロックの内側に他の関数を呼び出す必要があります。

それで、私は自分のすべての関数をコードブロックの外側に移動する必要があるか、それともこの分離を保ちながら他のコードブロックから自分の関数の1つを呼び出すことができる方法がありますか?

回答:

回答№1は1

彼らがjQueryの文書を使っているという事実。変数(または関数)が無名関数によって作成されたクロージャーの中にあるという事実と同じくらい、すぐに使えるショートカットは実際には変数を定義するための問題ではありません

`function(){}`

そう、これは主にグローバル名前空間の汚染を避けるために行われます。また、一度範囲外になると、ガベージコレクタが削除されます。 かもしれない そこにあったもののいくらかを集めることができる(それが範囲外であるので)。

グローバル変数を使いたい場合は、それでも問題はありません。できるだけそれらを制限するようにしてください。 readyブロックの内側から必要な場合は、外側を定義してその内側を参照してください。

var MyGlobalObj_guid52z = {};
$(function(){
MyGlobalObj_guid52z.MyFunction = function(){
//do what you want in here
};
});
//and later you can do this
MyGlobalObj_guid52z.MyFunction();

回答№2の場合は1

Moduleパターンを読んでください。これはあなたのための小さな例です:

window.Namespace = window.Namespace || {}; //defining our namespace

Namespace.Module = (function(){
var api = {};

var func = function() { //private function, accessible only inside this module

};

api.publicfunc = function() { // public function

};

return api; //all api functions will be available globally
})();