我正在尝试更改在函数中收到的对象内部的属性
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';
我将无法分配为只读对象'#<< / p>的属性'name'
答案 0 :(得分:0)
也许您可以尝试以下方法:分配给新的变量,而不是直接修改function loop(array, length, func) {
for (var i = 0; i < array.length; i++) {
array[i].func(length);
length += array[i].number;
if (func) {
length = func(length);
}
}
return length;
}
function bar(number) {
this.func = function(len) {
console.log(len);
};
this.number = number;
}
function main() {
var array = [];
for (var j = 1; j < 3; j++) {
var foo = new bar(j);
array.push(foo);
}
loop(array, 0, function(newLen) {
return loop(array, newLen);
});
}
main();
Object.keys(myObject).length
答案 1 :(得分:0)
日期可能是不可枚举的属性。检查
Object.getOwnPropertyDescriptor(obj, 'date')
然后检查结果。应该将枚举数设置为true,以使其出现在console.log中。
答案 2 :(得分:-1)
handleData = obj =>{
console.log(obj)
obj['name'] = 'newName'
console.log(obj)
}
const data = {name: 'Laura', type: 'file',date: '1 min ago'}
handleData(data)