我正在使用一些自定义的Dojo小工具,但我仍然觉得我是一个众所周知的柔术者,他们的头部会达到两倍,从而刮伤他们的耳朵。出于某种原因,我使用dojo.hitch()
感觉不对。
以下是有效的:
myObject = {
one: function() {
promise = new Deferred();
promise.then(dojo.hitch(this, function() { this.two(); }));
},
two: function() {
// Func 2 stuff
}
}
myObject.one();
......但似乎应该更简单。
显然promise.then(this.two);
会导致Func 2过早地消失,但是我在做dojo.hitch(...)
时遇到的困难似乎应该是过度杀伤。
将this
的方法链接到同一对象中其他位置的.then()
函数的最简单或最正确的方法是什么?
答案 0 :(得分:2)
dojo.hitch(this, function () { this.two(); }))
绝对可以通过几种方式简化。
最简单的简化是dojo.hitch(this, this.two)
。
这与上面的效果相同,只涉及一个较少的函数定义,而是将two
函数直接传递给hitch
。 (this.two
仅引用该函数,它不会执行它,因为引用后没有括号。)
更简洁的简化是dojo.hitch(this, 'two')
。
这在技术上与前两个略有不同,因为它实现了后期绑定,因为two
将在调用生成的函数时被查找,而在前两个示例中,它将被查找一旦调用hitch
来生成函数,就立即启动。
hitch and partial tutorial也可能会有所帮助。