ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript_javascript のヒントでクロージャーを排除する一般的な方法の紹介

JavaScript_javascript のヒントでクロージャーを排除する一般的な方法の紹介

WBOY
WBOYオリジナル
2016-05-16 16:09:061575ブラウズ

JavaScript のクロージャは、積極的に開発される機能であると同時に、JS はクロージャを使用していくつかの問題をより適切に解決できる機能でもあります。特定の問題、JS の問題があり、問題をかろうじて解決するにはクロージャを使用する必要がありました。

前者についてはここでは説明しません。JS クロージャーが問題をより良く解決できる場合は、もちろんクロージャーを使用する方が良いでしょう。

私が議論しているのは後者です。JS 自体の制限のため、「変数は 1 回だけ初期化される」という要件など、クロージャで解決する必要があります。

従来の言語は次のように解決されます:

コードをコピー コードは次のとおりです:

クラスクラス{
関数 init(){
This.n = 0;
}
関数 func(){
これ.n ;
これを返します。n;
}
}
var obj = 新しいクラス();

JavaScript は通常、この問題を (クロージャを使用して) 解決します。

コードをコピーします コードは次のとおりです:

var obj = {
func : (function(){
var n = 0;
return function(){
ん;
n を返します;
}
})()
}

しかし、私はこの方法の方が好きです (クロージャーを排除します):

コードをコピーします コードは次のとおりです:

関数クラス(){
var self = this;
self.n = 0;
self.func = function(){
self.n ;
return self.n;
}
}
var obj = 新しいクラス();

後者の方がスケーラビリティが優れているため、変数に対して異なる演算を実装する必要がある場合、後者は別の関数 (つまり、単純な線形展開) を定義するだけで済みますが、前者 (クロージャ) は完全に書き直す必要があります。 (これが、リファクタリングという言葉をよく聞く理由です)。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。