js中可以通过call、apply、bind来切换或固定this的指向。
call
func.call(this.value, arg1,arg2,...)
复制代码
ag:
var obj = {a:10};
var a = 30;
function add(val){
return this.a + val;
}
add.call(this, 20);
复制代码
apply
apply用法与call类似,唯一的却别是apply的参数以数组的形式传入
复制代码
func.apply(thisValue, [arg1, arg2...])
复制代码
ag:
var obj = {a:10};
var a = 30;
function add(val){
return this.a + val;
}
add.call(this, [10]);
复制代码
bind
bind用于将函数体内的this绑定到某个对象,返回一个新的函数。
复制代码
用变量接收对象的方法:
var d = new Date()
d.getTime();
var print = d.getTime;
print() //Uncaught TypeError: this is not a Date object.
复制代码
改写方法:
var d = new Date()
d.getTime();
var print = d.getTime.bind(d);
print();
复制代码