展開演算子[...オブジェクト]

あなたが言ったなら、オペレーターを拡大するために、ジュニアパートナーは無知に見えることを余儀なくされるかもしれません、あなたはシャアを言っていますか?

しかし、別の言い方に変えると[...object]、友達は突然、「ああ、ES6でこの表現を言ったんだ!」と気付くかもしれません。

  • オリジナルMDN-拡張構文

  • 関数:構文展開(構文の拡張)、関数呼び出し缶/配列構成、配列式、またはstringデプロイされた文法レベル。リテラルオブジェクト、オブジェクト式がキー値によって展開されたときにも構成できます。

  • 構文

  1. 関数呼び出し:myFunction(...iterableObj);
  2. リテラル配列構造または文字列:[...iterableObj, '4', ...'hello', 6];
  3. リテラルオブジェクトを作成する場合は、属性を複製またはコピーします(ECMAScript 2018仕様の新機能)。let objClone = { ...obj };
  • 説明

構文とObject.assign()動作を拡張すると、一貫した実行が浅いコピーになります(トラバース1つのみ)。より深いコピーが必要な場合は、問題が発生します。

var arr1 = [1, 2, 3];
var arr2 = [...arr1]; // like arr.slice()
arr2.push(4); 

console.log(arr1); // [ 1, 2, 3 ]
console.log(arr2); // [ 1, 2, 3, 4 ]

もちろん、spread演算子には、複数の配列を連結するなど、より多くの機能があります。

var arr1 = [0, 1, 2];
var arr2 = [3, 4, 5];
var arr3 = [...arr1, ...arr2];
console.log(arr3); // [ 0, 1, 2, 3, 4, 5 ]

おすすめ

転載: blog.csdn.net/weixin_43956521/article/details/111470374