我无法从Object克隆或分配属性

时间:2016-12-01 10:24:13

标签: javascript ecmascript-6

我试图从JavaScript中的另一个对象复制某些属性但失败了。

我注意到的第一件事是Chromes控制台中Object的某些属性略微褪色。我搜索并找到了这个问题:What is the significance of faded properties when using console.dir in Chrome Developer Tools Console

我的任务是复制这些属性并为它们分配一些新值。但是,无论我使用defer还是_.clone还是_.cloneDeep,这些"褪色"属性不包含在新对象中。

Use _.cloneDeep Use Object.assign()

1 个答案:

答案 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.getOwnPropertyNamesReflect.ownKeys检索包含无数密钥的密钥列表。