摘要:表示能否通過循環(huán)返回屬性表示能否修改屬性的值包含這個屬性的數(shù)據(jù)值讀取屬性時(shí)調(diào)用的函數(shù),默認(rèn)值為寫入屬性時(shí)調(diào)用的函數(shù),默認(rèn)值為其中直接在對象上定義的屬性,默認(rèn)值均為通過方法或方法,如果不指定的值,則全部默認(rèn)為。
數(shù)據(jù)屬性和訪問器屬性
數(shù)據(jù)屬性 | 訪問器屬性 | |
---|---|---|
共同特性 | [[enumerable]] | |
[[configurable]] | ||
特有特性 | [[writable]] | [[get]] |
[[value]] | [[set]] | |
設(shè)置單個屬性方法 | Object.defineProperty(obj, prop, descriptor) | |
設(shè)置多個屬性方法 | Object.defineProperties(obj, props) | |
讀取單個屬性描述符 | Object.getOwnPropertyDescriptor(obj, prop) | |
讀取對象所有屬性描述符 | Object.getOwnPropertyDescriptors(obj) | |
備注 | obj: 需要被操作的目標(biāo)對象; prop: 目標(biāo)對象需要定義(讀取)或修改的屬性的名稱; descriptor: 將被定義或修改的屬性的描述符; props: 該對象的一個或多個鍵值對定義了將要為對象添加或修改的屬性的具體配置; |
|
[[Configurable]]:
表示能否通過delete刪除屬性從而重新定義屬性,(設(shè)置為false,表示不能從對象中刪除屬性(在嚴(yán)格模式下調(diào)用delete會報(bào)錯)),
能否修改屬性的特性,
能否把數(shù)據(jù)屬性修改為訪問器屬性(或相反),
從true修改為false是單向的,即一旦把把屬性定義為不可配置的,就不能再把它變回可配置了(此時(shí)只能單向修改writable從true到false)。
[[Enumerable]]: 表示能否通過for-in循環(huán)返回屬性
[[Writable]]: 表示能否修改屬性的值
[[Value]] : 包含這個屬性的數(shù)據(jù)值
[[Get]]: 讀取屬性時(shí)調(diào)用的函數(shù),默認(rèn)值為undefined
[[Set]]: 寫入屬性時(shí)調(diào)用的函數(shù),默認(rèn)值為undefined
其中直接在對象上定義的屬性,[[Configurable]], [[Enumerable]], [[Writable]]默認(rèn)值均為true;定義屬性 定義單個屬性
通過Object.defineProperty()方法或Object.defineProperties()方法,如果不指定writale, enumerable, configurable 的值,則全部默認(rèn)為 false。
Object.defineProperty(book, "actor", { value: "Nicholas" })定義多個屬性
var book = {} Object.defineProperties(book,{ _year:{ writable: true, value: 2004 }, edition:{ writable: true, value: 1 }, // year為訪問器屬性 year:{ get: function(){ return this._year; }, set: function(newValue){ if(newValue > 2004){ this._year = newValue; this.edition += newValue - 2004; } } } }); // {_year: 2004, edition: 1}讀取屬性的描述符 讀取單個屬性的描述符
Object.getOwnPropertyDescriptor(book, "_year"); // {value: 2006, writable: true, enumerable: false, configurable: false} Object.getOwnPropertyDescriptor(book, "edition"); // {value: 3, writable: true, enumerable: false, configurable: false} Object.getOwnPropertyDescriptor(book, "year"); // {get: ?, set: ?, enumerable: false, configurable: false} Object.getOwnPropertyDescriptor(book, "actor"); // {value: "Nicholas", writable: false, enumerable: false, configurable: false}讀取所有屬性的描述符
Object.getOwnPropertyDescriptors(book)注意
從上面代碼Object.getOwnPropertyDescriptor()執(zhí)行結(jié)果中可以看出來,通過Object.defineProperty()方法或Object.defineProperties()方法,如果不指定數(shù)據(jù)屬性或訪問器屬性的writale, enumerable, configurable 的值,則全部默認(rèn)為 false。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/108589.html
摘要:一般來講,函數(shù)執(zhí)行完畢后,局部活動對象就會被銷毀,內(nèi)存中僅保存全局作用域,但是閉包的情況有所不同理解閉包的前提先理解另外兩個內(nèi)容作用域鏈垃圾回收作用域鏈當(dāng)代碼在執(zhí)行過程中,會創(chuàng)建變量對象的一個作用域鏈。 閉包是javascript語言的一個難點(diǎn),也是它的特色,很多高級應(yīng)用都要依靠閉包來實(shí)現(xiàn)。個人的理解是:函數(shù)中嵌套函數(shù)。 閉包的定義及其優(yōu)缺點(diǎn) 閉包是指有權(quán)訪問另一個函數(shù)作用域中的變量的...
摘要:工作中總結(jié)的一些比較重要的前端技能,覺得在面試中比較合適提問,即能查看出面試者的技術(shù)功底,又能考察其知識體系的廣度。異步編程的考察,其關(guān)鍵字的使用,與的關(guān)系,同時(shí)可以深入考察總共有幾種異步編程的方式。 工作中總結(jié)的一些比較重要的前端技能,覺得在面試中比較合適提問,即能查看出面試者的技術(shù)功底,又能考察其知識體系的廣度。適用于應(yīng)屆生和工作年限兩年下的同學(xué),掌握下面的知識基本滿足工作需求了。...
摘要:工作中總結(jié)的一些比較重要的前端技能,覺得在面試中比較合適提問,即能查看出面試者的技術(shù)功底,又能考察其知識體系的廣度。異步編程的考察,其關(guān)鍵字的使用,與的關(guān)系,同時(shí)可以深入考察總共有幾種異步編程的方式。 工作中總結(jié)的一些比較重要的前端技能,覺得在面試中比較合適提問,即能查看出面試者的技術(shù)功底,又能考察其知識體系的廣度。適用于應(yīng)屆生和工作年限兩年下的同學(xué),掌握下面的知識基本滿足工作需求了。...
摘要:所以,有另一種說法認(rèn)為閉包是由函數(shù)和與其相關(guān)的引用環(huán)境組合而成的實(shí)體。所以本文中將以維基百科中的定義為準(zhǔn)即在計(jì)算機(jī)科學(xué)中,閉包,又稱詞法閉包或函數(shù)閉包,是引用了自由變量的函數(shù)。 閉包(closure)是JavaScript中一個神秘的概念,許多人都對它難以理解,我也一直處于似懂非懂的狀態(tài),前幾天深入了解了一下執(zhí)行環(huán)境以及作用域鏈,可戳查看詳情,而閉包與作用域及作用域鏈的關(guān)系密不可分,所...
閱讀 2048·2019-08-30 15:52
閱讀 2440·2019-08-29 18:37
閱讀 789·2019-08-29 12:33
閱讀 2839·2019-08-29 11:04
閱讀 1522·2019-08-27 10:57
閱讀 2092·2019-08-26 13:38
閱讀 2759·2019-08-26 12:25
閱讀 2445·2019-08-26 12:23