鍍金池/ 問答/網(wǎng)絡(luò)安全  HTML/ javascript對(duì)象的屬性標(biāo)簽?zāi)J(rèn)的不是false嗎?

javascript對(duì)象的屬性標(biāo)簽?zāi)J(rèn)的不是false嗎?

1.

let d1 = Object.getOwnPropertyDescriptor({name: "hello"}, 'name');
console.info(d1);

為什么打印出來是

{ value: 'hello',
  writable: true,
  enumerable: true,
  configurable: true }

而通過Object.defineProperties()定義的屬性,這幾個(gè)默認(rèn)就是false

回答
編輯回答
孤星

這個(gè)問題在MDN上 defineProperty 有解釋,摘錄如下:

  1. 該方法(指的是defineProperty)允許精確添加或修改對(duì)象的屬性。這個(gè)方法允許修改默認(rèn)的額外選項(xiàng)(或配置)。默認(rèn)情況下,使用 Object.defineProperty() 添加的屬性值是不可修改的。(即默認(rèn)是false)
  2. 通過賦值操作添加的普通屬性是可枚舉的(比如本題目中使用JSON格式創(chuàng)建的對(duì)象,相當(dāng)于是var a = {}; a.name='hello';,實(shí)際是賦值操作),能夠在屬性枚舉期間呈現(xiàn)出來(for...in 或 Object.keys 方法), 這些屬性的值可以被改變,也可以被刪除。
2017年6月25日 11:09