独自の関数内のオブジェクト リテラル参照: 'this' と 'obj' の比較
オブジェクト リテラル内で関数を定義する場合、オブジェクトを「this」として参照するか、「obj」を直接使用して参照するかという問題が発生する可能性があります。どちらのアプローチでも同じ結果が得られるように見えますが、考慮すべき潜在的な影響があります。
関数内での 'this' の参照
関数内での 'this' の使用関数は常にオブジェクトのメソッドとして呼び出されることを前提としています。このアプローチでは、オブジェクト コンテキストの外で関数を呼び出すときに問題が発生する可能性があります。例:
var obj = { key1: "it", key2: function() { return this.key1 + " works!"; } }; var func = obj.key2; // Assign function to a new reference alert(func()); // Error: Reference lost outside of object context
関数内での 'obj' の参照
関数内で 'obj' を直接参照すると、前の例で直面した問題が解決されます。ただし、別の懸念事項が生じます。
var obj = { key1: "it", key2: function() { return obj.key1 + " works!"; } }; var newref = obj; obj = { key1: "something else"; }; alert(newref.key2()); // Outputs "something else works"
この場合、'obj' によって参照されるオブジェクトが変更された場合、関数は更新されたオブジェクト プロパティを引き続き使用します。これにより、特に関数の有効期間中にオブジェクト参照が変更された場合、予期しない動作が発生する可能性があります。
最適なアプローチの選択
「this」を参照するかの選択「obj」は、特定のコンテキストと各アプローチに関連する潜在的なリスクによって異なります。関数がオブジェクト コンテキスト内でのみ使用されることを目的としている場合は、「this」を使用することをお勧めします。ただし、関数がオブジェクト コンテキストの外部で使用される可能性がある場合、またはオブジェクト参照を変更するリスクがある場合は、「obj」を直接参照する方が安全な方法です。
オブジェクトの整合性の確保
オブジェクトの整合性を維持することが重要なシナリオでは、次の点を考慮してください。 options:
以上がオブジェクト リテラル関数の「this」と「obj」: いつどちらを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。