Object.defineProperty()

今天看ES6的class時,看到了Object.defineProperty()這一ES5的定義對象屬性的方法。函數

在js中咱們能夠經過下面這幾種方法定義屬性:性能

 1 // (1) define someOne property name
 2 
 3   someOne.name = 'cover';
 4 
 5 //or use (2)
 6 
 7   someOne['name'] = 'cover';
 8 
 9 // or use (3) defineProperty
10 
11   Object.defineProperty(someOne, 'name', { value : 'cover' })

今天另外兩個很少說了,主要講第三個,今天的主角Object.defineProperty()spa

其使用語法是這樣的:code

Object.defineProperty(obj, prop, descriptor)

obj 須要被操做的目標對象對象

prop 目標對象須要定義或修改的屬性的名稱blog

descriptor 將要被定義或修改的屬性的描述符ip

主要講descriptor描述符,其形式主要有兩種:數據描述符(value/writable)和存取描述符(getter/setter),在定義對象屬性時,描述符只能是其中之一,不能同時是二者get

◆描述符的可選鍵值it

  數據描述符和存取描述符均具備的一下可選鍵值table

  configurable:表示對象的屬性是否能夠被刪除,以及除 writable 特性外的其餘特性是否能夠被修改(writable可被修改,但只能被改成false) 默認值:false

  enumerable:表示該屬性可否出如今對象的枚舉屬性中。定義了對象的屬性是否能夠在 for...in 循環 和 Object.keys() 中被枚舉 默認值:false

  數據描述符的可選鍵值

  value:表示該屬性對應的值。能夠是任何有效的 JavaScript 值(數值,對象,函數等)默認值:undefined

  writable:表示該屬性可否被複制運算符所改變。爲false時,屬性值不能被修改,屬性值被修改時不會改變其值,但也不會報錯 默認值:false

  存取描述符的可選鍵值

  get:當訪問該屬性時,就會調用這個方法,並返回結果 默認值:undefined

  set:當設置該屬性時,就會調用這個方法 默認值:undefined

相關文章
相關標籤/搜索