首先,道歉,在某处(我一直在寻找!)
我想这样做:
var i;
for (i = 0; i < 5; i++) {
...
// Add an anchor to the dom
...
a.onclick = goog.bind(this.doSomething, this);
...
}
namespace.Clazz.prototype.doSomething = function(event, index) {
console.log('index: ' + index);
}
我想要5个锚点,每个锚点在i
到doSomething
时都会被点击(与点击事件一起)。我还想在this
中保留doSomething
的上下文(因此绑定)。
答案 0 :(得分:1)
a.onclick = (function(i) { return function() {goog.bind.....}; })(i);
这会创建一个新的闭包,其中i的值是固定的。
答案 1 :(得分:1)
如果您可以撤销收到参数的顺序,您应该可以这样做......
a.onclick = goog.bind(this.doSomething, this, i);
所以你的doSomething
应该是这样的......
namespace.Clazz.prototype.doSomething = function(index, event) {
console.log('index: ' + index);
};
至少从the Google Closure Library source看它的样子。
答案 2 :(得分:0)
这样的事情对你来说可能会更好:
a.onclick = function() {
doSomething(this, i)
}