三种方法用于指定函数内部的 this 指向

call

var rascal = 456;
var keith = {
    rascal: 123
};
function a() {
    console.log(this.rascal);
}
a.call(this); //456
a.call(keith); //123

apply - 参数传数组

function keith(a, b) {
    console.log(a + b);
}

keith.call(null, 2, 3); //5
keith.apply(null, [2, 3]); //5

bind - 返回一个新函数。bind 方法并非立即执行一个函数。

var keith = {
    a: 1,
    count: function() {
        console.log(this.a++);
    }
};

var f = keith.count.bind(keith);
f(); //1
f(); //2
f(); //3

来源

三种方法都是继承自 Function.prototype

console.log(Function.prototype.hasOwnProperty('call')) // true
console.log(Function.prototype.hasOwnProperty('apply')) // true
console.log(Function.prototype.hasOwnProperty('bind')) // true

results matching ""

    No results matching ""