javascript - 无法在 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';
我得到无法分配给对象'#<的只读属性'名称'
解决方案
也许你可以试试这个:分配给一个新的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'}
}
推荐阅读
- python - 使用 annotate 仅对具有不同字段的条目求和(值和求和函数中未使用的字段)
- tensorflow - 为什么在 python 中识别 GPU 设备时 Tensorflow 不在 GPU 上运行?
- azure - EventGridTrigger 在 App 服务计划和 ASE 中是否有效?
- kubernetes - 使用谷歌云功能浏览所有 Kubernetes Jobs
- ios - iOS应用在后台时蓝牙更新后发送网络请求
- c++ - boost::asio::async_accept 处于无限循环中
- python - Python使用if函数输出
- javascript - 为什么将 Vuex 存储实例传递给 Vue 构造函数参数?
- html - 在 VS Code 中将多个 Sass 文件编译到多个目的地
- security - 谷歌网站链接报告我们很抱歉