收藏
回答

全局变量被自动改值

var stateArr = app.globalData.stateList; //状态枚举列表

var item = {

"id": "",

"text": "全部"

};

stateArr.unshift(item);



这种执行后app.globalData.stateList 中也多了一个全部的元素


最后一次编辑于  2018-06-14
回答关注问题邀请回答
收藏

1 个回答

  • 卢霄霄
    卢霄霄
    2018-06-14

    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、如果是很复杂的,那只能遍历属性赋值了

    2018-06-14
    赞同 1
    回复 1
    • You can you up
      You can you up
      2018-06-14

      666

      2018-06-14
      回复