JavaScript: オブジェクト リテラルを使用して独自の関数内でキーを参照する
問題:
オブジェクトを使用する場合JavaScript のリテラルには、オブジェクトのプロパティを操作する関数を含めるのが一般的です。ただし、これらの関数内でオブジェクトを参照するには、これを使用する方法と、オブジェクト リテラル名を明示的に使用する方法の 2 つがあります。この記事では、各アプローチの影響について説明します。
解決策:
使用方法:
var obj = {
key1: "it",
key2: function(){return this.key1 + " works!"}
};
- これを使用して関数内でオブジェクトを参照すると、その方法に関係なく、関数は常に正しいオブジェクトにアクセスできるようになります。
- ただし、関数がオブジェクトから抽出された場合 (たとえば、変数に割り当てられたり、引数として渡された場合)、これは期待どおりにオブジェクトを参照しない可能性があります。
オブジェクト リテラル名の使用:
var obj = {
key1: "it",
key2: function(){return obj.key1 + " works!"}
};
- 明示的オブジェクト リテラル名 (obj など) を使用して関数内でオブジェクトを参照すると、関数が常にオブジェクトにアクセスできるようになります。
- ただし、このアプローチでは、オブジェクトが誤って変更されたり上書きされたりする可能性があります。オブジェクトへの別の参照が作成され、別の値が割り当てられた場合、関数は引き続き元のオブジェクトを参照します。
潜在的な問題:
-
これの使用: 関数がオブジェクトから抽出されるとき、これはグローバル オブジェクト (ウィンドウ
-
オブジェクト リテラル名の使用: オブジェクトが再割り当てまたは変更されると、関数は更新されたオブジェクトではなく元のオブジェクトを参照する場合があります。 one.
推奨事項:
-
使用目的に基づいてアプローチを選択してください: 関数が主に目的の場合にこれを使用します。オブジェクトのメソッドとして使用されます。関数が抽出されて再利用される可能性がある場合は、オブジェクト リテラル名を使用します。
-
ES6 const またはクロージャーを使用します: ES6 では、オブジェクトが再割り当てされないように const を使用します。 ES5 では、クロージャを使用してローカル スコープを作成し、オブジェクトを保存します。
-
関数をオブジェクトにバインドします。 obj.key2 = obj.key2.bind(obj) を使用して、関数が常に正しいオブジェクトを参照していること。
以上がJavaScript オブジェクト リテラルの独自の関数内でオブジェクト キーを最適に参照するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。