应该有一个 [dojo] 障碍在我头晕目眩?
Should there by a [dojo] hitch in my giddy-up?
我正在使用一些自定义的 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
的方法 link 转换为同一对象中其他地方的 .then()
函数的最简单或最正确的方法是什么?
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 也可能有帮助。
我正在使用一些自定义的 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
的方法 link 转换为同一对象中其他地方的 .then()
函数的最简单或最正确的方法是什么?
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 也可能有帮助。