全局变量被自动改值
var stateArr = app.globalData.stateList; //状态枚举列表
var item = {
“id”: “”,
“text”: “全部”
};
stateArr.unshift(item);
这种执行后app.globalData.stateList 中也多了一个全部的元素
1 回复
array object 这两个类型的赋值,是传址的方式,var stateArr = app.globalData.stateList 的赋值,实际上 stateArr 和 app.globalData.stateList 就成了同一个东西。
如果不想改变,可以用一些转换方式。
1、如果是数组类型,可以使用 slice(),concat() 来生成新数组: var a = [1,2,3]; var b = a.slice();这里b就是新数组
2、如果是对象类型,如果是单纯的数据型对象,如:var a = {b:1,c:2}。可以使用 var b = JSON.parse(JSON.stringify(a))来产生新对象。(数组也可以这么操作)
3、如果是很复杂的,那只能遍历属性赋值了