ホームページ > ウェブフロントエンド > jsチュートリアル > オブジェクトで Array.prototype.fill() を使用するときに参照の受け渡しを回避するにはどうすればよいですか?

オブジェクトで Array.prototype.fill() を使用するときに参照の受け渡しを回避するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-01 13:17:10
オリジナル
192 人が閲覧しました

How to Avoid Reference Passing When Using Array.prototype.fill() with Objects?

参照によって 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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート