Javascript 在我头晕的时候应该有一个道场吗?
我正在使用一些定制的Dojo小部件,但我一直觉得我是一个众所周知的柔术师,通过绕着他们的头两圈来抓挠他们的耳朵。出于某种原因,我使用的Javascript 在我头晕的时候应该有一个道场吗?,javascript,dojo,scope,this,Javascript,Dojo,Scope,This,我正在使用一些定制的Dojo小部件,但我一直觉得我是一个众所周知的柔术师,通过绕着他们的头两圈来抓挠他们的耳朵。出于某种原因,我使用的dojo.hitch()感觉不对劲 以下是有效的方法: myObject = { one: function() { promise = new Deferred(); promise.then(dojo.hitch(this, function() { this.two(); })); }, two: fu
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(这两个)
会导致Func2过早启动,但我一直在做的dojo.hitch(…)的繁琐操作似乎有些过头了
将this
的方法链接到同一对象中其他地方的then()
函数的最简单或最合适的方法是什么 dojo.hitch(this,function(){this.two();}))
可以通过几种方式进行简化
最字面的简化应该是dojo.hitch(this,this.two)
这与上面的效果相同,只涉及一个函数定义,而不是将two
函数直接传递到hitch
。(this.two
只引用函数,不执行,因为引用后没有括号。)
更简洁的简化是dojo.hitch(这是“两个”)
这在技术上与前两个稍有不同,因为它实现了后期绑定,因为调用生成的函数时将查找two
,而在前两个示例中,调用hitch
生成函数时将立即查找它
这也可能有帮助