cari

Rumah  >  Soal Jawab  >  teks badan

关于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怎么就丢失了他的绑定呢?


高洛峰高洛峰2934 hari yang lalu653

membalas semua(2)saya akan balas

  • 欧阳克

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

    你最后执行的还不是:

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

    这样才是2:

    obj.foo();//2


    balas
    0
  • 三叔

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

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

    balas
    0
  • Batalbalas