转自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一同被消除