2017-02-16 77 views
1

我正在使用es6語法。爲什麼將屬性d添加到對象b,但是當我使用Object.define屬性時,屬性c未添加到對象b爲什麼object.define屬性不會將屬性添加到對象中?

這裏是我的代碼

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

有一個在你的問題沒有ES6特定的語法。 – Paulpro

回答

2

Object.assign只複製枚舉自己的屬性。

Object.defineProperty限定非枚舉的屬性,除非描述符將覆蓋enumerable默認值(false)。

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

什麼是枚舉?什麼是這個屬性的使用 – user944513

+0

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