收藏
回答

使用setdata 赋值时 globaldata 跟随变化?

页面data用globaldata 赋值之后,用setdata改变该变量导致globaldata相应改变是怎么回事呢?

真的百思不得其解

具体请看图片

回答关注问题邀请回答
收藏

3 个回答

  • 卢霄霄
    卢霄霄
    2020-06-10

    对象的赋值方式是传递地址

    let a = {value: 1}

    let b = a

    b.value = 2

    console.log(a.value)

    2020-06-10
    有用 1
    回复
  • .com
    .com
    2020-06-28

    深拷贝和浅拷贝的问题,拷贝一份就行了,楼上这种就是拷贝的写法

    2020-06-28
    有用
    回复
  • Admin ²º²⁴
    Admin ²º²⁴
    2020-06-10

    你这个是赋值的是对象的引用。就是其实this.data.a和app.globaData.a是一个引用而已,他们指向了同一个内存块。真正复制一个对象方法可以Object.assign(浅复制)或者自己写个对象clone克隆方法:

    Object.prototype.clone = function() {

      var copy = (this instanceof Array) ? [] : {};

      for (attr in this) {

        if (!obj.hasOwnProperty(attr)) continue;

        copy[attr] = (typeof this[i] == "object")?obj[attr].clone():obj[attr];

      } 

      return copy;

    };

     

     

    a = {k1:1, k2:2, k3:3};

    b = a.clone();

    2020-06-10
    有用
    回复
登录 后发表内容
问题标签