js對象的屬性探究

js對象的屬性有很多種斥赋,總結(jié)這一篇文章是為將來理解對象復(fù)制和對象繼承打基礎(chǔ)如失。

數(shù)據(jù)描述符

1. 可枚舉性(Enumerable)

實際上對象的每一個屬性都有一個標志位故响,表示這個屬性是否可以枚舉叔磷。我們通過obj.a=123這種方式設(shè)置的屬性都為可枚舉屬性须床。有時候我們需要將屬性設(shè)置為不可枚舉,因為我們不希望這個屬性在迭代的時候被訪問(for...in
Object.keys
方法)噪叙。
原生對象中幾乎所有屬性都是不可枚舉的矮锈。
你可以通過obj.propertyIsEnumerable(prop)來判斷自身屬性是否可枚舉。

2. 可配置性(configurable)

當且僅當該屬性的 configurable 為 true 時构眯,該屬性描述符
才能夠被改變愕难,也能夠被刪除早龟。我們通過obj.a=123這種方式設(shè)置的屬性都為可配置屬性惫霸。

3. 可寫性(writable)

當且僅當該屬性的 writable 為 true 時,該屬性才能被
賦值運算符改變葱弟。我們通過obj.a=123這種方式設(shè)置的屬性都為可寫屬性壹店。


存取描述符

get方法

一個給屬性提供 getter 的方法,它決定了你訪問這個屬性的時候會發(fā)生什么芝加。

set方法

一個給屬性提供 setter 的方法硅卢,它決定了你給這個屬性賦值的時候會發(fā)生什么。

數(shù)據(jù)描述符和存取描述符可以通過Object.defineProperty(obj, prop, descriptor)來設(shè)置或修改藏杖。有關(guān)如何使用它們将塑,也可以在這個方法的描述中看到。


是否是對象自身的屬性

對于一個對象來說蝌麸,它的某個屬性要么屬于對象自身点寥,要么是在原型鏈上。
有關(guān)原型鏈的內(nèi)容来吩,可以看我的另一篇文章徹底理解js的原型鏈敢辩。


相關(guān)方法

判斷方法:

  • obj.propertyIsEnumerable(prop) 返回該屬性是否可以枚舉,如果不是自身的屬性弟疆,直接返回false戚长。
  • obj.hasOwnProperty(prop):參數(shù)為屬性名,返回布爾值怠苔,這個屬性是否屬于對象自身同廉。只要在對象自身上,不管可不可枚舉都返回true。
  • in 操作符:用法prop in objectName恤溶,返回這個屬性是否存在于對象自身或原型鏈上乓诽,只要存在,不管可不可枚舉都返回true咒程。注意如果屬性名是字符串鸠天,要用引號括起來。

獲取方法:

  • Object.getOwnPropertyDescriptor
  • Object.getOwnPropertyNames(obj):返回obj的所有自身屬性的屬性名(包括可枚舉和不可枚舉的屬性)組成的數(shù)組帐姻。
  • Object.keys(obj):返回obj的所有可枚舉的自身屬性的屬性名組成的數(shù)組稠集。
  • for (variable in object) {...}:迭代一個對象的所有可枚舉屬性,包括在原型鏈上的可枚舉屬性饥瓷。

表格:


可枚舉性與自身屬性的相關(guān)方法

參考資料

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末剥纷,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子呢铆,更是在濱河造成了極大的恐慌晦鞋,老刑警劉巖,帶你破解...
    沈念sama閱讀 223,126評論 6 520
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件棺克,死亡現(xiàn)場離奇詭異悠垛,居然都是意外死亡,警方通過查閱死者的電腦和手機娜谊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,421評論 3 400
  • 文/潘曉璐 我一進店門确买,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人纱皆,你說我怎么就攤上這事湾趾。” “怎么了派草?”我有些...
    開封第一講書人閱讀 169,941評論 0 366
  • 文/不壞的土叔 我叫張陵搀缠,是天一觀的道長。 經(jīng)常有香客問我近迁,道長艺普,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,294評論 1 300
  • 正文 為了忘掉前任钳踊,我火速辦了婚禮衷敌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘拓瞪。我一直安慰自己缴罗,他們只是感情好,可當我...
    茶點故事閱讀 69,295評論 6 398
  • 文/花漫 我一把揭開白布祭埂。 她就那樣靜靜地躺著面氓,像睡著了一般兵钮。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上舌界,一...
    開封第一講書人閱讀 52,874評論 1 314
  • 那天掘譬,我揣著相機與錄音,去河邊找鬼呻拌。 笑死葱轩,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的藐握。 我是一名探鬼主播靴拱,決...
    沈念sama閱讀 41,285評論 3 424
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼猾普!你這毒婦竟也來了袜炕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,249評論 0 277
  • 序言:老撾萬榮一對情侶失蹤初家,失蹤者是張志新(化名)和其女友劉穎偎窘,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體溜在,經(jīng)...
    沈念sama閱讀 46,760評論 1 321
  • 正文 獨居荒郊野嶺守林人離奇死亡陌知,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,840評論 3 343
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了炕泳。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片纵诞。...
    茶點故事閱讀 40,973評論 1 354
  • 序言:一個原本活蹦亂跳的男人離奇死亡上祈,死狀恐怖培遵,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情登刺,我是刑警寧澤籽腕,帶...
    沈念sama閱讀 36,631評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站纸俭,受9級特大地震影響皇耗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜揍很,卻給世界環(huán)境...
    茶點故事閱讀 42,315評論 3 336
  • 文/蒙蒙 一郎楼、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧窒悔,春花似錦呜袁、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,797評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春膘融,著一層夾襖步出監(jiān)牢的瞬間芙粱,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,926評論 1 275
  • 我被黑心中介騙來泰國打工氧映, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留春畔,地道東北人。 一個月前我還...
    沈念sama閱讀 49,431評論 3 379
  • 正文 我出身青樓岛都,卻偏偏與公主長得像拐迁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子疗绣,可洞房花燭夜當晚...
    茶點故事閱讀 45,982評論 2 361

推薦閱讀更多精彩內(nèi)容