Open MandyJin opened 6 years ago
let obj = {name: 'xxx', age: 25, sex: 0};
let {name="111", age=0,h="mmm"} = obj;//=>对象解构赋值默认情况下要求:左侧变量名和对象中的属性名一致才可以
console.log(name, age,h);
let ary = [12];
let [a, b = 0] = ary;//=>在解构的时候可以给变量设置默认值:如果当前变量对应结构中的这一项没有值,变量用默认值
console.log(a, b);//=>12 0
let ary = [12, 23, 34, 45, 56];
//=>需求:获取第一项,把剩下的项作为一个数组返回
let [a, ...b] = ary;
console.log(a, b);//=>12 [23,34,45,56] “...”在此处称之为剩余运算符:除了前面以外的项,都放在一个数组中
let [a, ...b, c] = ary;//=>Uncaught SyntaxError: Rest element must be last element 剩余运算符处于解构中最后的位置
my_call实现和内置call类似的功能
Function.prototype.my_call = function (context, ...arg) {
//=>...arg:存储除了第一个参数以外剩下传递进来的参数值 [10,20,30]
//=>context:obj
//=>my_call方法中的this就是我们要处理的那个函数(fn/sum...)
this.toString().replace('this', context);
this(...arg);
};
对象解构赋值