あなたが言ったなら、オペレーターを拡大するために、ジュニアパートナーは無知に見えることを余儀なくされるかもしれません、あなたはシャアを言っていますか?
しかし、別の言い方に変えると[...object]
、友達は突然、「ああ、ES6でこの表現を言ったんだ!」と気付くかもしれません。
-
オリジナル:MDN-拡張構文
-
関数:構文展開(構文の拡張)、関数呼び出し缶/配列構成、配列式、または
string
デプロイされた文法レベル。リテラルオブジェクト、オブジェクト式がキー値によって展開されたときにも構成できます。 -
構文:
- 関数呼び出し:
myFunction(...iterableObj);
- リテラル配列構造または文字列:
[...iterableObj, '4', ...'hello', 6];
- リテラルオブジェクトを作成する場合は、属性を複製またはコピーします(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 ]