参照によって Array.prototype.fill() にオブジェクトを渡す
fill() メソッドを使用して固定長の配列を初期化する場合、値としてオブジェクトを割り当てると、新しいインスタンスが作成されるのではなく、すべての配列要素が同じオブジェクトを参照することになります。これにより、配列要素を変更するときに意図しない動作が発生する可能性があります。
例:
var arr = new Array(2).fill({}); console.log(arr[0] === arr[1]); // true arr[0].test = 'string'; console.log(arr[1].test); // 'string'
参照の受け渡しの回避:
各要素が個別のインスタンスであるオブジェクトの配列を作成するには、オブジェクトに対して fill() を直接使用することは避けてください。代わりに、次の代替アプローチに従ってください:
Map 関数:
配列にプレースホルダー値 (未定義など) を入力し、map() を使用して各要素を次のように変換します。新しいオブジェクト:
var arr = new Array(2).fill().map(u => ({}));
オブジェクト ファクトリ関数:
新しいオブジェクトを返して配列を埋める関数を使用します:
var arr = new Array(2).fill().map(Object);
これらの手法を採用することで、配列内の各要素が個別であることを保証できます。オブジェクトを作成し、意図しない参照の受け渡しを回避し、オブジェクトの分離を維持します。
以上がオブジェクトで Array.prototype.fill() を使用するときに参照の受け渡しを回避するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。