es6或js动态的修改对象属性,并将对象加入数组,不能得到预期的结果。

首先,我有个按钮点击事件,点击该按钮后,触发addText方法,方法的意思大概是为对象lib.categories.Texts[0]添加textId属性,并将对象加入到dataText数组,其中id初始值是0,每次点击完事件后都+1,该方法运行在vue环境中:

addText(){
            let shapes = lib;
            Object.defineProperties(lib.categories.Texts[0], Object.getOwnPropertyDescriptors({'textId':id}));
            this.dataText.push(lib.categories.Texts[0]);
            id++;
            console.log(this.dataText)
        },

但是结果却是这样的

clipboard.png

我希望的是数组第一个对象里的textId为0,第二个textId为1 当然我执行了对象的浅拷贝也是出现一样

 Object.assign(lib.categories.Texts[0],{'textId':id});

各位大神们有什么更好的思路或方法去实现这个功能么?

阅读 9.2k
2 个回答

对象引用导致的吧
`
Object.assign({}, lib.categories.Texts[0],{'textId':id});
`
每次创建一个新对象

你的id是个全局变量么?你在函数体里面定义,猜测你修改ID为3,然后在打印出来也是3

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏