【问题标题】:How to define dojo static variables or static objects by using declare如何使用declare定义dojo静态变量或静态对象
【发布时间】:2013-11-27 23:35:23
【问题描述】:

我今天在玩道场,我有这样的事情想和你道场专家确认!

我已经创建了这样一个示例模块,比如

定义(“xmodules/staticvartest”,[“dojo/_base/declare”,“dojo/_base/lang”],函数(声明,语言){ var sttestvar = "staticTestOrginal"; return declare("xmodules.staticvartest", null, { 构造函数:函数(选项){ lang.mixin(这个,选项); this.dytestvar = "dynamicTestOrginal"; }, 设置数据:函数(s,d){ sttestvar = s; this.dytestvar = d; }, 显示:函数(){ console.log(this.from + ", dytestvar=[" +this.dytestvar+ "], sttestvar= [" +sttestvar+ "]" ); }, }); });

我调用这个模块,作为

要求([“xmodules/staticvartest”],函数(SVTest){ var o1 = 新的 SVTest({ “来自”:“来自obj1”, }); var o2 = 新的 SVTest({ “来自”:“来自obj2”, }); o1.show(); o2.show(); 控制台.log(""); o1.setthedata("ST_FROM_O1", "DY_FROM_O1"); o1.show(); o2.show(); 控制台.log(""); o2.setthedata("ST_FROM_O2", "DY_FROM_O2"); o1.show(); o2.show(); });

得到了结果:

 来自obj1, dytestvar=[dynamicTestOrginal], sttestvar= [staticTestOrginal]
fromobj2, dytestvar=[dynamicTestOrginal], sttestvar= [staticTestOrginal]

 来自obj1, dytestvar=[DY_FROM_O1], sttestvar= [ST_FROM_O1]
fromobj2, dytestvar=[dynamicTestOrginal], sttestvar= [ST_FROM_O1]

 来自obj1, dytestvar=[DY_FROM_O1], sttestvar= [ST_FROM_O2]
fromobj2, dytestvar=[DY_FROM_O2], sttestvar= [ST_FROM_O2]

您已经注意到 sttestvar 的行为与 java 类静态变量非常相似!

我的问题是:这绝对正确吗?有什么危险的洞吗?如果我在生产中使用这种编码模式是否安全?我不是真正的道场专家。任何机构都可以提供关于我的结论的信息/评论/投诉。非常感谢。

【问题讨论】:

  • 请将您的代码缩进或标记为代码。你的问题不可读。
  • 你现在可以看到它现在是可读的代码,任何关于问题的线索?

标签: javascript variables static dojo declare


【解决方案1】:

我没有立即发现它有什么问题。一件事是你需要一个类的实例才能工作。我在dojo中看到静力学的方式是这样的

    define([], function(){
        var o = declare(...);
        o.sttestvar = "staticTestOrginal";
        return o;
    });

那么你不需要类的实例来使用那个静态,即

    require([ "xmodules/staticvartest" ], function(SVTest) {
        console.log(SVTest.sttestvar);
    })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 2016-03-30
    相关资源
    最近更新 更多