Dojo Widget中的全局变量

时间:2021-01-11 13:49:00

转自http://blog.163.com/mqsy_yj/blog/static/2940499220121014115338929/

前期设计了一个清除widget的功能,虽然可以从html文件中清掉widget的痕迹,但是重新初始化加载该widget时,还是会出现清除之前的一 些状态,主要是在widget中定义的全局变量的值还保留着,即使初始化时对这些变量重新赋值也无用,今天看到一博客中也分析了这种问题,自己试试后果 然,遂记下来。

define(["dojo/declare"],function(declare){

return declare("",[],{

oobj:{},

oarr:[],

oint:0,

owid:null,//其他widget对象

constructor: function(){

this.iobj = {};

this.iarr = [];

}

});

});

在上面的代码中定义了两组全局变量,一组是oobj、oarr、oint、owid;二组是iobj、iarr。

经试验,定义的这两组变量都可以完成widget内部全局访问的工作,当widget执行destroyRecursive()并重新创建后,第一组中oobj和oarr的值并没有被清空,而一组中其他变量和二组中的变量都被重新初始化。

结论:Object和Array等JS特殊类型必须在constructor方法里定义为全局变量时才能与widget一同消除,JS一般类型数据或是widget对象在任何情况下都会同widget一同被消除