bind

作者: 66dong66 | 来源:发表于2017-09-27 09:29 被阅读0次

bind

var obj = {
    a: 1,
    foo: function f() {
        console.log(this.a);        
    }
}

obj.foo(); //1

var g = obj.foo;
g();    //undefined

g = obj.foo.bind(obj);
g();    //1

g.applay(obj) // 1
g.call(obj) //1
函数foo在非严格模式下如果没有明确绑定对象,则会绑定到全局对象,所以输出undefined
。在严格模式下则会报错。

为什么obj.foo()
 可以正确输出呢?原因在于这种调用方式会[隐式绑定](https://github.com/getify/You-Dont-Know-JS/blob/master/this%20&%20object%20prototypes/ch2.md)到执行这个方法的对象上(obj)。

call 和applay

function xxx(a,b,c){
  console.log(a);
  console.log(b);
  console.log(c);
  console.log(this)
}
xxx.applay(obj,[1,2,3])
xxx.call(obj,1,2,3,)

相关文章

网友评论

      本文标题:bind

      本文链接:https://www.haomeiwen.com/subject/xsmyextx.html