js call、apply、bind

173 阅读1分钟

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