Vue中的三個點在不同情境下的意思
- 操作數組
//里面放自己定義的方法
methods: {
/**
* 把數組中的元素孤立起來
*/
iClick() {
let iArray = ['1', '2', '3'];
console.log(...iArray);
// 打印結果 1 2 3
},
/**
* 在數組中添加元素
*/
iClick3() {
let iArray = ['1', '2', '3'];
console.log(['0', ...iArray, '4']);
// 打印結果 ["0", "1", "2", "3", "4"]
},
/**
* 在數組中刪除元素(取出一個元素)
* 與結構賦值的結合
* 如果將擴展運算符用於數組賦值,只能放在參數的最后一位,否則會報錯。
*/
iClick8() {
const [first, ...rest] = [1, 2, 3, 4, 5];
console.log(first);
// 打印結果 1
console.log([...rest]);
// 打印結果 [2, 3, 4, 5]
const [one, ...last] = ["foo"];
console.log(one);
//打印結果 foo
console.log([...last]);
//打印結果 []
},
/**
* 數組的合並
*/
iClick6() {
// ES6 的寫法
var arr1 = [0, 1, 2];
var arr2 = [3, 4, 5];
arr1.push(...arr2);
console.log(arr1);
// 打印結果 [0, 1, 2, 3, 4, 5]
},
/**
* 數組的合並(推薦使用)
*/
iClick7() {
var arr1 = [0, 1, 2];
var arr2 = [3, 4, 5];
console.log([...arr1, ...arr2]);
// 打印結果 [0, 1, 2, 3, 4, 5]
},
/**
* 將字符串轉成數組
*/
iClick9() {
let iString = 'woshizhongguoren';
console.log([...iString]);
// 打印結果 ["w", "o", "s", "h", "i", "z", "h", "o", "n", "g", "g", "u", "o", "r", "e", "n"]
},
/**
* Map 和 Set 結構, Generator 函數
*/
iClick10() {
let map = new Map([
[1, 'one'],
[2, 'two'],
[3, 'three'],
]);
let arr = [...map.keys()];
console.log(arr);
// 打印結果 [1, 2, 3]
},
/**
* 當做參數傳遞
* 和直接傳數組的區別
*/
iClick4() {
let iArray = ['1', '2', '3'];
//注意傳的時候,就要三個點
this.hanshu(...iArray);
},
hanshu(...iArray) {
let ooo = 1;
console.log(...iArray);
// 打印結果 1 2 3
},
/**
* 求出最大值
*/
iClick5() {
let iArray = [1, 2, 3, 99, 44, 66, 21, 85, 77];
let ooo = Math.max(...iArray);
console.log(ooo);
// 打印結果 99
},
/**
* 如果對沒有iterator接口的對象,使用擴展運算符,將會報錯。
*/
iClick11() {
let obj = {
name: 'zhh',
age: '20'
}
console.log([...obj]);
},
}
- 操作對象
methods: {
/**
* 添加一個屬性
*/
method3() {
let a = {age: 18, id: 10};
// 把 name 屬性,放到對象中
let c = {name: 'zhh', ...a};
console.log(c);
// 打印結果 {name: "zhh", age: 18, id: 10}
},
/**
* 修改一個屬性
*/
method2() {
let a = {name: 'zhh', age: 18, id: 10};
//先拿到a, 后面的name:zhh1,把 a 中name 的值替換掉了
let c = {...a, name: 'zhh1'};
console.log(c);
// 打印結果 {name: "zhh1", age: 18, id: 10}
},
/**
* 刪除一個屬性(拿出屬性或者對象)
*/
method1() {
let a = {name: 'zhh', age: 18, id: 10};
let {name, ...c} = a;
console.log(name, c);
// 打印結果 zhh {age: 18, id: 10}
},
}
-
...mapState 和 ...mapActions 都是 ... 的擴展, 將state中的變量或者方法 提取出來並展開, 是mapState 和 mapActions 的一種簡便用法
-
參考文章: