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