call、apply、bind 的用法分别是什么?

155 阅读1分钟

apply,callbind都是来改变this的指向的, 第一个参数都是相同的this指向的那个对象 但是apply接受的第二个参数一定是数组 call和bind接受的参数是连续的参数

applycall立即执行 bind是预先改变this的指向

var s = {
    a:1,
    b:2,
    add(name) {
        console.log(this.a + this.b)
        console.log(name)
    }
}

var a = {
    a:2,
    b:2,
}
var b = {
    a:4,
    b:2,
}
var c = {
    a:5,
    b:6,
}
s.add.call(a,"我叫call")
s.add.apply(b,["我叫apply"])`
//s.add.bind(c,"我叫bind")此时bind只是改变了this如果要执行需要加上()
s.add.bind(c,"我叫bind")()
//等价于s.add.bind(c)("我叫bind")