欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

JS中改变this指向

程序员文章站 2022-07-13 15:31:30
...

在js中,函数也是对象,函数也有自己的属性和方法,先定义一个函数做例子

 function test(a,b){
        console.log(a+b);
        console.log(this);
    }

这时候调用test,this指向window,原因看这里window对象和全局域

然后创建一个对象

var obj = {name:"wang"}

******函数对象的call方法,用于指定this调用函数,第一参数是指定的this对象,从第二个参数开始,是调用test函数所传递的参数

test.call(obj,1,3);

******函数对象的apply方法,也用于指定this调用函数,第一个参数也是指定的this对象,和call的区别是:第二个参数是一个数组,数组中存放本次调用要传递的参数 

 test.apply(obj,[1,3]);

******函数对象的.bind方法,不会调用本函数,而是生成一个新的函数,这个函数的代码逻辑和原函数一样,但是this指向不一样,.bind用于指定this生成一个新的函数,新的函数在调用时其中的this总是指定的this 

var bindTest = test.bind(obj);
    // 可以解开注释看一下bindTest
    // console.log(bindTest)
    bindTest();

 

相关标签: JS 改变this指向