찾다

 >  Q&A  >  본문

关于js this的问题

function foo() {
        console.log(this.a);
    }

    function doFoo(fn) {
        fn();
    }

    var obj = {
        a: 2,
        foo: foo
    };

    var a = "oops,global";

    doFoo(obj.foo); //oops,global
    
    为什么会输出全局对象呢?obj怎么就丢失了他的绑定呢?


高洛峰高洛峰2937일 전656

모든 응답(2)나는 대답할 것이다

  • 欧阳克

    欧阳克2016-11-16 14:59:17

    你最后执行的还不是:

    function foo() {
            console.log(this.a);
        }

    这样才是2:

    obj.foo();//2


    회신하다
    0
  • 三叔

    三叔2016-11-16 14:58:37

    doFoo(obj.foo.bind(obj));//2

    회신하다
    0
  • 취소회신하다