gpt4 book ai didi

javascript - 如何使用 declare 定义 dojo 静态变量或静态对象

转载 作者:行者123 更新时间:2023-11-29 19:45:35 25 4
gpt4 key购买 nike

我今天打道场,有这么一件事想跟各位道场高手确认一下!

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

define("xmodules/staticvartest",  [ "dojo/_base/declare", "dojo/_base/lang"], function(declare, lang) {    var sttestvar = "staticTestOrginal";    return  declare("xmodules.staticvartest", null, {        constructor : function(options) {            lang.mixin(this, options);            this.dytestvar = "dynamicTestOrginal";        },        setthedata: function(s, d) {            sttestvar = s;            this.dytestvar = d;        },        show: function() {            console.log(this.from + ", dytestvar=[" +this.dytestvar+ "],  sttestvar= [" +sttestvar+ "]"  );        },                  });});

我调用这个模块,作为

require([ "xmodules/staticvartest" ], function(SVTest) {     var o1 = new SVTest({             "from" : "fromobj1",        });var o2 = new SVTest({            "from" : "fromobj2",        });             o1.show();        o2.show();        console.log("");        o1.setthedata("ST_FROM_O1", "DY_FROM_O1");        o1.show();        o2.show();        console.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 类静态变量!

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

最佳答案

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

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

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

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

关于javascript - 如何使用 declare 定义 dojo 静态变量或静态对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19986454/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com