我今天在玩道场,我有这样的事情想和你道场专家确认!
我创建了这样一个示例模块,例如
定义(“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+ "]" ); }, }); });
我调用这个momdule,作为
要求([“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(); });
并得到了结果:
fromobj1, dytestvar=[dynamicTestOrginal], sttestvar= [staticTestOrginal]
fromobj2, dytestvar=[dynamicTestOrginal], sttestvar= [staticTestOrginal]
fromobj1, dytestvar=[DY_FROM_O1], sttestvar= [ST_FROM_O1]
fromobj2, dytestvar=[dynamicTestOrginal], sttestvar= [ST_FROM_O1]
fromobj1, dytestvar=[DY_FROM_O1], sttestvar= [ST_FROM_O2]
fromobj2, dytestvar=[DY_FROM_O2], sttestvar= [ST_FROM_O2]
从中您已经注意到sttestvar的行为非常类似于 java 类静态变量!
我的问题是:这绝对正确吗?有什么危险的洞吗?如果我在生产中使用这种编码模式是否安全?我不是真正的道场专家。任何机构都可以提供有关我的结论的信息/评论/投诉。非常欣赏它。