哪种方法最佳,哪种方式有更好的效果?
使用closure或dojo.lang.hitch?
由于
答案 0 :(得分:3)
实际上lang.hitch(scope, method)
返回一个闭包,即它返回一个函数,该函数将调用给定method
中的函数scope
。这在面向对象的代码中定义回调时尤其有用,因此您可以编写:
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"]);
但this
方法中的callback
将指向button
。
请参阅完整代码以及jsFiddle中的其他详细信息:http://jsfiddle.net/phusick/r7jLr/