在下面的代码中,第一个函数没有绑定到obj
,但第二个函数是,所以f()
返回fifi
并按预期g()
返回。Mark Twain
但是第三次尝试,是by (obj.getCallBack)
first,现在是一个函数,然后调用它,本质上应该和f
case一样。但他们确实打印出来Mark Twain
。为什么他们不一定要obj
使用bind()
但仍然通过this
指向来执行obj
?
(第四次尝试只是一个通常的方法调用,并且this
应该绑定到调用该方法的对象)。
(在当前的 Chrome、Firefox 和 IE 9 上测试)
window.name = "fifi";
var obj = {
name: "Mark Twain",
getCallBack: function() {
return this.name;
}
}
var f = obj.getCallBack;
var g = f.bind(obj);
console.log(f);
console.log(f());
console.log(g);
console.log(g());
console.log((obj.getCallBack)());
console.log(obj.getCallBack());