Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/476.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在我头晕的时候应该有一个道场吗?_Javascript_Dojo_Scope_This - Fatal编程技术网

Javascript 在我头晕的时候应该有一个道场吗?

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小部件,但我一直觉得我是一个众所周知的柔术师,通过绕着他们的头两圈来抓挠他们的耳朵。出于某种原因,我使用的
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
生成函数时将立即查找它

这也可能有帮助