MandyJin / MandyJin.github.io

靳莹莹的博客
https://mandyjin.github.io/
1 stars 0 forks source link

ES6---路漫漫其修远其 #14

Open MandyJin opened 6 years ago

MandyJin commented 6 years ago

对象解构赋值

//=================对象解构赋值
// let obj = {name: 'xxx', age: 25, sex: 0};
// let {name, age} = obj;//=>对象解构赋值默认情况下要求:左侧变量名和对象中的属性名一致才可以
// console.log(name, age);

// let {sex} = obj;
// console.log(sex);//=>0

// let {age: ageAA} = obj;
// // console.log(age);//=>Uncaught ReferenceError: age is not defined
// console.log(ageAA);//=>25 给解构的属性名起别名作为我们使用的变量

// let {friend = 0} = obj;
// console.log(friend);//=>0 给不存在的属性设置默认值

//这个不理解的话,看楼下
/*let fn = function ({
                       name = '小明',
                       age = 0,
                       sex = "男"
                   } = {}) {//=>把传递的实参对象解构了(不传递值,默认赋值为空对象:现在传递对象或者不传递,形参接收到的都是对象),解构的时候,如果某个属性不存在,我们赋值默认值
    console.log(name, age,sex);

};
fn({
    name: 'xxx',
    age: 25
});*/
MandyJin commented 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 剩余运算符处于解构中最后的位置
MandyJin commented 6 years ago

call,apply,bind自己实现

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);
};