2017-02-16 3 views
1

Ich verwende es6 Syntax. Warum wird die Eigenschaft d zum Objekt b hinzugefügt, aber wenn ich Object.defineproperty verwendet, wird die Eigenschaft c dem Objekt b nicht hinzugefügt?Warum fügt object.defineproperty die Eigenschaft nicht dem Objekt hinzu?

Hier ist mein Code

var a = { 
 
    a: 1 
 
} 
 
var b = { 
 
    a: 5, 
 
    b: 6 
 
} 
 

 
b['d'] = 33 
 
Object.defineProperty(b, 'c', { 
 
    value: 'eee' 
 
}) 
 

 
var t = {} 
 
Object.assign(t, a, b) 
 
console.log(t)

https://es6console.com/iz8m4ux1/

+0

Es gibt keine ES6 spezifische Syntax in Ihrer Frage. – Paulpro

Antwort

2

Object.assign nur Kopien enumerable eigene Eigenschaften.

Object.defineProperty definiert non enumerable Eigenschaften, wenn der Deskriptor für enumerable den Standardwert (false) außer Kraft setzt.

var a ={a:1} 
 
var b={a:5,b:6} 
 
b['d']=33 
 
Object.defineProperty(b,'c',{ 
 
value:'eee', 
 
enumerable: true 
 
}) 
 
var t ={} 
 
Object.assign(t,a,b) 
 
console.log(t)

+0

Was ist aufzählbar? Was ist die Verwendung dieser Eigenschaft – user944513

+0

@ user944513 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Enumerability_and_ownership_of_properties – Bergi

Verwandte Themen