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();