1. call
作用:改变 this 指向,调用函数并传入参数。
语法:
function.call(this, arg1, arg2, ...)
应用:子构造函数继承父构造函数的属性
function Father (surname) {
this.surname = surname;
}
function Son (surname) {
// 改变父构造函数的中 this 为子构造函数中的 this,并给该属性传递值。
Father.call(this, surname);
}
var xiaoming = new Son('xiao');
2. apply
作用:改变 this 指向,调用函数并传入参数。
语法:
function.apply(this, [arg1, arg2, ...])
应用:调用 Math 的方法
var arr = [1, 2, 3];
Math.max.apply(Math, arr);
3. bind
作用:改变 this 指向,只传入参数不调用函数。
语法:
function.bind(this, arg1, arg2, ...)
应用:改变 setTimeout 中的 this 指向
var obj = {
data: 'first',
init: function () {
setTimeout(function(){
this.data = 'last';
}.bind(this), 3000)
}
}
obj.init();