ホームページ >ウェブフロントエンド >jsチュートリアル >「for...in」ループに影響を与えずにヘルパー メソッドを配列およびオブジェクトのプロトタイプに追加するにはどうすればよいですか?
JavaScript では、ヘルパー メソッドを使用して Array.prototype および Object.prototype を拡張すると、コードの機能を強化できます。ただし、for in ループを使用してオブジェクトを反復処理するときに、これらのメソッドがプロパティとして表示される可能性があり、潜在的な問題が発生する可能性があります。
これを防ぐには、配列を使用した for in ループを避けることを検討してください。あるいは、hasOwnProperty を使用して、プロトタイプから継承されたプロパティをフィルターで除外します。
for (var prop in anyObj) { if (Object.prototype.hasOwnProperty.call(anyObj, prop)) { // Do something } }
ただし、このアプローチは、未知のプロトタイプを持つオブジェクトを処理する汎用関数には適していない可能性があります。
より新しいソリューションこれは、defineProperty:
Object.defineProperty(Array.prototype, "find", { enumerable: false, writable: true, value: function(testFun) { // Code to find element in array } });
を使用して列挙不可能なプロパティを定義することです。これにより、find メソッドが for に含まれないことが保証されます。ループ内でコードを明確に保ち、潜在的な競合を防ぎます。
以上が「for...in」ループに影響を与えずにヘルパー メソッドを配列およびオブジェクトのプロトタイプに追加するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。