我试图从JavaScript中的另一个对象复制某些属性但失败了。
我注意到的第一件事是Chromes控制台中Object的某些属性略微褪色。我搜索并找到了这个问题:What is the significance of faded properties when using console.dir in Chrome Developer Tools Console
我的任务是复制这些属性并为它们分配一些新值。但是,无论我使用defer
还是_.clone
还是_.cloneDeep
,这些"褪色"属性不包含在新对象中。
答案 0 :(得分:1)
因为那些"褪色"属性是不可数的。这意味着您无法对它们进行互动。因此,Object.assign()
无法复制这些属性。
let a = {};
a.x = 1;
// define an unenumerable property
Object.defineProperty(a, 'y', {
value: 2,
enumerable: false
});
console.log(a, Object.assign({}, a)); //Object {x: 1, y: 2} Object {x: 1}

关于解决方案,您可以Object.getOwnPropertyNames
或Reflect.ownKeys
检索包含无数密钥的密钥列表。