无法更改或显示Javascript中的对象属性

时间:2018-06-21 02:15:06

标签: 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';
  

我将无法分配为只读对象'#<< / p>的属性'name'

3 个答案:

答案 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中。

请参见getOwnPropertyDescriptor

答案 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)