【发布时间】: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