在我的眩晕中,是否应该有[dojo]故障?

时间:2015-04-24 12:06:33

标签: javascript dojo scope this

我正在使用一些自定义的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()函数的最简单或最正确的方法是什么?

1 个答案:

答案 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也可能会有所帮助。