先记住第一句话:

箭头函数不能改变this指向
只有普通函数 function(){} ,可以改变this指向

更改this指向的三个方法

函数.call(参数1, 其他一个或者多个参数)

        在调用函数的同时,改变函数的this指向
        参数1,是改变的this,指向的是谁
        之后其他的参数,都是原始函数执行时,需要输入的实参
        多个实参之间,使用逗号间隔
    const obj1 = {
        name:'张三',
        sex:'男',
        fun1:function( age , addr , phone ){
            // 定义在 obj1 中的函数 fun1
            // this指向的是 obj1 这个对象
            // this.name 就是 obj1.name  就是 张三
            // this.sex  就是 obj1.sex   就是 男
            console.log(this.name , this.sex , age , addr , phone);
        }
    }
    obj1.fun1(18 , '北京' , 123456);  //张三 男 18 北京 123456
    obj2 = {
        name:'李四',
        sex:'女',
    }
    obj1.fun1.call(obj2 , 20 , '上海' , 654321);  //李四 女 20 上海 654321

函数.apply(参数1 , [ 一个或者多个单元的实参 ])

在调用函数的同时,改变函数的this指向
参数1,是改变的this,指向的是谁
之后的数组中,定义原始函数执行时,需要的实参
    const obj1 = {
        name:'张三',
        sex:'男',
        fun1:function( age , addr , phone ){
            // 定义在 obj1 中的函数 fun1
            // this指向的是 obj1 这个对象
            // this.name 就是 obj1.name  就是 张三
            // this.sex  就是 obj1.sex   就是 男
            console.log(this.name , this.sex , age , addr , phone);
        }
    }
    obj1.fun1(18 , '北京' , 123456);  //张三 男 18 北京 123456
    obj2 = {
        name:'李四',
        sex:'女',
    }
    obj1.fun1.apply(obj2 , [ 200 , '火星' , '%#^&!932903' ]);  //李四 女 200 火星 %#^&!932903

函数.bind(参数)

一般会使用 变量等 存储 bind() 执行结果,也就是生成的新的函数
当期,只是在改变 ojb1中存储的函数fun1的this指向
并且生成一个新的 函数 , 函数的内存地址 存储在 newFun 变量中
此时 我们没有执行调用 fun1 只是在定义生成一个新的函数
这个新的函数,只是this指向与 fun1 不同,其他,程序,参数,等等都与 fun1 完全相同
    const obj1 = {
        name:'张三',
        sex:'男',
        fun1:function( age , addr , phone ){
            // 定义在 obj1 中的函数 fun1
            // this指向的是 obj1 这个对象
            // this.name 就是 obj1.name  就是 张三
            // this.sex  就是 obj1.sex   就是 男
            console.log(this.name , this.sex , age , addr , phone);
        }
    }
    obj1.fun1(18 , '北京' , 123456);  //张三 男 18 北京 123456
    obj2 = {
        name:'李四',
        sex:'女',
    }
    const newFun = obj1.fun1.bind(obj2);
    newFun(500 , '不知道' , '穷,没有手机');  //李四 女 500 不知道 穷,没有手机

一沙一世界,一花一天堂。君掌盛无边,刹那成永恒。