Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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闭包与dojo lang.hitch_Javascript_Dojo_Closures - Fatal编程技术网

Javascript闭包与dojo lang.hitch

Javascript闭包与dojo lang.hitch,javascript,dojo,closures,Javascript,Dojo,Closures,哪一种是最佳实践,哪一种会带来更好的性能 使用closure或dojo.lang.hitch 谢谢实际上lang.hitch(作用域,方法)返回一个闭包,即它返回一个函数,该函数将在给定的作用域中调用函数方法。这非常有用,尤其是在面向对象代码中定义回调时,因此您可以编写: on(dom.byId("button"), "click", lang.hitch(this, "callback")); 而不是: on(dom.byId("button"), "click", function(sco

哪一种是最佳实践,哪一种会带来更好的性能

使用closure或dojo.lang.hitch

谢谢

实际上
lang.hitch(作用域,方法)
返回一个闭包,即它返回一个函数,该函数将在给定的
作用域
中调用函数
方法
。这非常有用,尤其是在面向对象代码中定义回调时,因此您可以编写:

on(dom.byId("button"), "click", lang.hitch(this, "callback"));
而不是:

on(dom.byId("button"), "click", function(scope, method) {
    return function() {
        method.apply(scope);
    }
}(this, this["callback"])); // execute the anonymous function immediately to get a closure
类似这样的方法会奏效:

on(dom.byId("button"), "click", this["callback"]);
但是
方法中的
这个
将指向
按钮

请参阅JSFIDLE中的完整代码和其他详细信息: