js-改变this指向

37 阅读1分钟
let obj = {
        name:"ws",
        readName(){
            console.log(this.name);
        }
    }
    obj.readName() // "ws"
    let obj2 = {
        name:"王顺",
        readName(){
            console.log(this.name);
        }
    }
    // 三种改变this指向的方法
    obj.readName.call(obj2)     //"王顺"
    obj.readName.apply(obj2)    //"王顺"
    obj.readName.bind(obj2)()   //"王顺"
 let obj = {
        name:"王顺",
        readSome(sex,age){
            console.log(`我是${this.name},性别${sex},年龄${age}岁`);
        },
        readThis:()=>{
            console.log(this);
        }
    }
    let obj2 = {
        name:"丰凡",
    }
    // 1.call参数传参且直接运行函数
    obj.readSome.call(obj2,'女',25)
    // 2.apply“数组传参”且直接运行函数
    obj.readSome.apply(obj2,['女',25])
    // 3.bind参数传参,但不直接运行。
    obj.readSome.bind(obj2,'女',25)()
    obj.readThis()
    // 无法修改箭头函数的this,因为箭头函数本身就没有this
    obj.readThis.call(obj2)
    ```