0

私が JS で開発するとき、内部関数 (クロージャ) で変数をキャプチャするか、オブジェクトを使用するかの選択に直面することがよくあります。

内部機能:

var x = ...;
var f = function() {
    // use x here
}

物体:

obj.x = ...;
obj.f = function() {
    // use x here
}

内部関数アプローチはより自然に「感じ」ますが、私は疑問に思っていました-何らかの方法でそれを行うことを心配するパフォーマンスへの影響はありますか?この種のことを行う最も慣用的な方法は何ですか?

4

2 に答える 2

2

平均的な PC に 8GB の RAM が搭載されている時代では、クロージャーとオブジェクト プロパティによるメモリ使用量は関係ないように思われます。いずれにせよ、自明でないアプリケーションでは、use クロージャのみ、またはプロパティ値のみを使用することが理にかなっている可能性はほとんどありません。

コード モジュールがある場合、そのモジュールのメソッドによって内部的にのみ使用される変数にクロージャを使用することは理にかなっています。また、getter と setter を使用せずに、モジュール間で共有する必要がある値にプロパティを使用することも理にかなっています (たとえば、obj.propertyではなく使用したい場合obj.getProperty())。

また、プロパティへのアクセスは、関数を使用して値を取得するよりもはるかに効率的ですが、getter と setter は、単に値を読み取ったり割り当てたりするよりも重要な機能 (値の検証や整合性チェックなど) を提供できます。

いつものように、適切と思われる基準 (速度、コードの保守性、堅牢性、クロス ブラウザー サポートなど) に従って、アプリケーションに適したものを使用してください。

于 2013-06-26T23:42:27.900 に答える