我今天在玩道场,我有这样的事情想和你道场专家确认!
我创建了这样一个示例模块,例如
定义(“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 类静态变量!
我的问题是:这绝对正确吗?有什么危险的洞吗?如果我在生产中使用这种编码模式是否安全?我不是真正的道场专家。任何机构都可以提供有关我的结论的信息/评论/投诉。非常欣赏它。