2014-02-20 51 views
0

有没有一种方法可以无约束地调用obj的inc?可以不绑定地调用对象的成员方法吗?

function callIt(callback){ 
    callback(); 
} 

var obj = { 
    count: 0, 
    inc: function(){ 
     this.count++; 
    } 
}; 

callIt(obj.inc.bind(obj)); 
obj.count;// 1 

问题与我有关,因为较旧的IE版本不支持方法绑定。

+2

看一看[如何进入回调中正确的'this' /背景?](http://stackoverflow.com/q/20279484/218196 )替代解决方案。 –

+1

我的建议是使用['es5-shim.js'](https://github.com/es-shims/es5-shim)(或同等版本),然后继续处理更有趣的问题。或者,可以在[MDN的Function.bind文档](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/Bind)中找到填充/填充填充 – user2864740

+0

这是一个相关的来源与有趣的答案,这个主题:http://stackoverflow.com/questions/9644044/javascript-this-pointer-within-nested-function – Blauharley

回答

1

你可以使用一个函数值

callIt(function() { obj.inc(); }); 
+0

那么为什么不只是使用[一个垫片]绑定? – user2864740

+0

@ user2864740 OP明确表示,由于IE限制,他们无法使用 – JaredPar

相关问题