猿问

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)

        },

但是结果却是这样的

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

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

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


收到一只叮咚
浏览 1665回答 1
1回答

aluckdog

对象引用导致的吧`Object.assign({}, lib.categories.Texts[0],{'textId':id});`每次创建一个新对象
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答