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怎么就丢失了他的绑定呢?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
你最后执行的还不是:
function foo() { console.log(this.a); }
这样才是2:
obj.foo();//2
doFoo(obj.foo.bind(obj));//2
你最后执行的还不是:
这样才是2:
doFoo(obj.foo.bind(obj));//2