1. 组件里的多选框checkbox没有自动更新
解决办法 组件添加 v-if 重新渲染组件
2.Set和Map类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set中,没有重复的key。要创建一个Set,需要提供一个Array作为输入,或者直接创建一个空Set
var s1 = new Set(); // 空Set
var s = new Set([1,2,3,'3',4]);
//添加一个key
s.add(5);
//重复元素在Set中自动被过滤
s.add(5);
console.log(s);//Set {1, 2, 3, 4,5}
//删除一个key
s.delete(2);
console.log(s);//Set{1, 3, "3", 4, 5}//注意数字3和字符串'3'是不同的元素。
3.初始化Map需要一个二维数组,或者直接初始化一个空Map
var m = new Map([['Michael', 95], ['Bob', 75], ['Tracy', 85]]);
m.get('Michael'); // 95
4.Map具有以下方法
var m = new Map(); // 空Map
m.set('Adam', 67); // 添加新的key-value
m.set('Bob', 59);
m.has('Adam'); // 是否存在key 'Adam': true
m.get('Adam'); // 67
m.delete('Adam'); // 删除key 'Adam'
m.get('Adam'); // undefined
5.Map由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉
var m = new Map();
m.set('Adam', 67);
m.set('Adam', 88);
m.get('Adam'); // 88
6. 扩展运算符(…)进行赋值,支持函数赋值,解决深拷贝问题
let obj1 = { name: 'Jay', age: '22',fun:function() {console.log(1)} }
let obj2 = { ...obj1 };
obj2.name = 'xxx'
console.log(obj1.name, obj2.name, obj2)
//输出结果为(jay xxx {name: "xxx", age: "22", fun: ƒ})
// 其它方法及不足
// (1)使用 Object.assign() 方法复制对象
let obj1 = { a: 0 , b: { c: 0}};
let obj2 = Object.assign({}, obj1);
console.log(JSON.stringify(obj2)); // { a: 0, b: { c: 0}}
obj2.a = 2;
console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 0}}
console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 0}}
obj2.b.c = 3;
console.log(JSON.stringify(obj1)); // { a: 1, b: { c: 3}}
console.log(JSON.stringify(obj2)); // { a: 2, b: { c: 3}}
// Object.assign()只是让对象里第一层的数据没有了关联性,但是对象内的对象则跟被复制的对象有着关联性的。
// (2)JSON.parse(JSON.stringify(obj)) 这个方法虽然简单,但是也有一个问题就是,对象里面的函数方法没有赋值成功。