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();
上一篇: 如何在页面上预览word