首页 > 解决方案 > 无法在 Javascript 中更改或显示对象属性

问题描述

我正在尝试更改我在函数中收到的对象内部的属性

handleData = (obj) =>{
    console.log(obj) // shows {name: 'Laura', type: 'file',date: '1 min ago'}
    obj.name = 'newName'; // doesn't work
    Object.assign(obj, {name: 'newName', type: 'newType'}) // if console log it shows {name: 'newName', type: 'newType'} missing date
}

我应该怎么办?问题出在哪里?我无法弄清楚问题:(

更新:

如果我这样做

obj.name = 'newName';

我得到无法分配给对象'#<的只读属性'名称'

标签: javascript

解决方案


也许你可以试试这个:分配给一个新的var,而不是obj直接修改

handleData = (obj) =>{
    console.log(obj) // shows {name: 'Laura', type: 'file', date: '1 min ago'}
    const cloned = JSON.parse(JSON.stringify(obj));
    console.log(cloned ) // should shows {name: 'Laura', type: 'file', date: '1 min ago'}

    const modified = Object.assign({}, cloned, {name: 'newName', type: 'newType'});
    console.log(cloned) // should shows {name: 'Laura', type: 'file', date: '1 min ago'}
    console.log(modified) // should shows {name: 'newName', type: 'newType', date: '1 min ago'}
}

推荐阅读