2016-12-01 8 views
0

JavaScriptで別のオブジェクトからいくつかのプロパティをコピーしようとしましたが失敗しました。オブジェクトのプロパティを複製できない、またはプロパティを割り当てることができません。

私が気づいた最初のことは、Chromesコンソールのオブジェクトのいくつかのプロパティがわずかに退色している​​ことです。 What is the significance of faded properties when using console.dir in Chrome Developer Tools Console

私の仕事は、これらのプロパティをコピーして新しい値を割り当てることです。ただし、_.cloneまたは_.cloneDeepまたはObject.assign()を使用しても、これらの「退色」プロパティは新しいオブジェクトには含まれません。

Use _.cloneDeep Use Object.assign()

+0

試しましたか?JSON.parse(JSON.stringify(obj))? – Lain

+0

@Lainこれは、退色したプロパティを持たない文字列を返します。 – Hegwin

+0

申し訳ありませんが、今回は何の助けにもなりません。あなたは文字列ではありませんが、プロパティの問題は残っています。 – Lain

答えて

1

それらの "フェード" プロパティはunenumerableあるため。これはあなたがそれらの上に介入することができないことを意味します。その結果、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のいずれかによってunenumerableキーを含むキーのリストを取得することができます。

+0

これは非常に奇妙なことです。なぜ彼らが「無造作の性質」になったのか分かりません。私はこのオブジェクトデータをスーパーエージェント経由でJSON APIから取得しました – Hegwin

関連する問題