call、apply、bind

三种方法用于指定函数内部的 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
posted @ 2022-03-09 10:32  远方的少年🐬  阅读(19)  评论(0编辑  收藏  举报