es6拓展的对象方法
- Object .is()
比较两个参数是否完全一致,与全等区分(例NAN全等返回false) - Object.assign()
将后面参数对象熟悉赋给参数1对象 - Object.setPrototypeOf(对象,新原型对象)
改变对象原型,同理get…为得到原型 - super
覆盖对象实例的一个方法、但依然要调用原型上的同名方法,我们之前知道对象与原型重名会调用自身,看一个实例:let describe{ test() { return "is a good boy"; } } let person{ test() { return "tianming" + super.name(); //等价于return "tianming"+describe.test.call(this); } } Object.setPrototypeOf(person,describe); console.log(person.test());
解构
- 常见解构
解构存在主要是便于数据的提取,对象数组都可以用解构来提取数据
当解构参数多余实际内容时,解构变量值为undefined,同样的像之前参数一样我们可以给他们附上初始化值格式也是一样的,解构时也可以修该对象属性名,案例中name:myname这一步,解构也是可以嵌套的,多层关系,数组的解构还可以,空变量只取后面的,如案例中lastnumber。let person = { name: '天明', age: '19', sex: 'male' } let { name: myname, age, sex } = person; console.log(myname, age, sex); let arr = [1, 2, 3]; let [ a, b, c, d = 4 ] = arr; let [ , ,lastnumber ] = arr; console.log(a, b, c, d); console.log(lastnumber);
- 数组解构赋值以及应用:
剩余项也可以用到解构之中let arr = [a = 1, b = 2, c = 3]; [ a, b, c ] = arr; // 实现变量值交换 let c = 1, d = 2; [ a, b ] = [ b, a ];
// 克隆数组 let arr = [1, 2, 3]; let [ ...arr1 ] = arr;
- 参数解构
传递参数时我们同样也可以采用解构的方式来,解构方式当做参数当没有传递该为参数时会报错我们要在解构时给他们加上一个空对象或空数组才行let arr = [1, 2]; function add(a, [ b, c ] = []){ return a + b + c; } add(1); // 没传递时参数默认为解构值undefined add(1, arr);