JavaScriptの閉鎖は非常に興味深いものです。いくつかの関連情報を読んだ後//www.vevb.com/article/29472.htm、それについて最も印象的なことは、公的およびプライベートを実現することです。
非匿名の閉鎖を作成する最も簡単な構文は、次のとおりです。
コードコピーは次のとおりです。
var obj =(function(){//さまざまなコード});
閉鎖の最も古典的な例:
コードコピーは次のとおりです。
var makecounter =(function(){
var i = 1;
this.test = function(){
console.log(i);
i ++;
}
これを返します。
});
var obj = makecounter();
obj.test(); // 1
obj.test(); // 2
var obj1 = makecounter();
obj1.test(); // 1
obj1.test(); // 2
プライベートおよびパブリック:
コードコピーは次のとおりです。
var makecounter =(function(){
var i = 1;
//これはプライベートです
function log(){
console.log(i);
i ++;
}
//この男は公開されています
this.test(){
ログ();
}
これを返します。
});
var obj = makecounter();
obj.test(); // 1
obj.test(); // 2
obj.log(); //未定義
自己実行機能:
そのようなコードを初めて見たとき、私は感じました:とても進んだ。
コードコピーは次のとおりです。
var obj =(function(window){
//さまざまなコード
}(ウィンドウ));
それから私はGoogleに行きましたが、彼らはしばしばこのように書くことがわかりました:
コードコピーは次のとおりです。
var obj =(function(){
var i = 1;
this.test = function(){
console.log(i);
i ++;
}
これを返します。
}());
obj.test(); // 1
obj.test(); // 2
最も簡単な理解は、プログラマーが怠zyであり、1つのステップに2つのステップを書くことです。
コードコピーは次のとおりです。
//これは関数です。このようなobj()を使用する必要があります
var makecounter = function(){
//さまざまなコード
}
//これはオブジェクトです。 var obj = makecounter()に似ています。
var obj =(function(){
//さまざまなコード
}());
また、パラメーターを持つこともできます。
コードコピーは次のとおりです。
var output = "new Test";
var obj =(function(msg){
this.test = function(){
console.log(msg);
}
これを返します。
}(出力));
obj.test();
また、より複雑で高度になる可能性があります:
コードコピーは次のとおりです。
var output = "new Test";
var obj =(function(obj、msg){
//この男もプライベートです。 obj.i(!= obj.i)と同様ですが、obj.iではなく(外部からアクセスできないため)。
var i = 1;
//プライベート
function log(){
console.log(i + ":" + msg);
i ++;
}
//公共
obj.test = function(){
ログ();
}
OBJを返します。
}(obj、output));
obj.test(); // 1:新しいテスト
obj.i = 100;
//変更されていません
obj.test(); // 2:新しいテスト
初めて会ったとき、私たちは深い印象を残しました。閉鎖の使用は、状態と属性の維持を実現します。画面上のグローバル変数の飛行を回避します。変数が常に再定義され、再割り当てされる恥ずかしい状況を終了します。また、オブジェクトを複数のJSファイルにセグメント化することもできます。本当に素晴らしいです。
上記はこの記事の全体的な内容です。あなたがそれを気に入っていただければ幸いです。