在javascript DOJO中维护对象状态

fv2wmkja  于 2022-12-16  发布在  Dojo
关注(0)|答案(1)|浏览(148)

我用下面的代码调用页面中每个按钮的函数。

dojo.query('.btn').forEach(function(item){
        Obj =   new MyClass(item); // class calls the ajax request on error of each btn click I have to handle some functionality in below function showError
        dojo.connect(Obj, 'showError', dojo.hitch(Obj, function(errors){
            console.log(Obj + 'came');
        }));

这里我试着用dojo.hitch来维护每个对象Obj的状态,但是它没有维护。只有第一个Obj在触发。对于第二个按钮,第一个Obj也在触发。这里我错过了什么吗?

lvmkulzt

lvmkulzt1#

Obj被声明为全局变量。请尝试在它前面加上一个var。例如:

var Obj = new MyClass(item);

如果不提供var,它将创建一个全局可访问变量Obj,这意味着每次循环时,都引用同一个全局变量,结果是每个按钮都连接到同一个Obj(这就是为什么两个按钮都连接到同一个对象)。
另外,阅读StackOverflow上的this question,以获得关于声明变量和全局作用域的更详细的视图。

相关问题