也許有人對這個比較陌生漾稀,什么是數(shù)據(jù)屬性/訪問器屬性派近?萄金,它是干啥的蟀悦?碳柱,客官往里走,里面都有:
在ECMAscript中有兩種屬性:數(shù)據(jù)屬性 And 訪問器屬性
數(shù)據(jù)屬性: 規(guī)定一個 obj 中屬性的特性熬芜,就是行為莲镣,這個屬性能干什么,不能干什么涎拉? 來了
? ??value:設(shè)置屬性值瑞侮,默認(rèn)值為 undefined。
????writable:設(shè)置屬性值是否可寫鼓拧,默認(rèn)值為 true半火。?
????enumerable:設(shè)置屬性是否可枚舉,即是否允許使用 for/in 語句或 Object.keys() 函數(shù)遍歷訪問季俩,默認(rèn)為 true钮糖。
????configurable:設(shè)置是否可配置屬性特性,默認(rèn)為 true酌住。如果為 false店归,將無法刪除該屬性,不能夠修改屬性值酪我,也不能修改屬性的屬性描述符消痛。
但是這里注意:如果屬性描述符有?writable?或?configurable?有一個為?true,則?value?也允許修改都哭。
總結(jié):數(shù)據(jù)屬性 就是對指定屬性做出控制 能否:修改? 枚舉? 刪除? value是什么
訪問器屬性: 一個對象有多個屬性秩伞,當(dāng)你訪問此對象的某個屬性時,期間發(fā)生了什么從開始到結(jié)束
這里說一下?configurable 和?enumerable 也是訪問器屬性欺矫,上面以做出解釋纱新,這里就不寫了,主要是以下兩個
get:取值 getter 函數(shù)穆趴,默認(rèn)為 undefined脸爱,當(dāng)訪問該屬性時,會調(diào)用此函數(shù)毡代,執(zhí)行時不傳入任何參數(shù)阅羹,但是會傳入this對象(由于繼承關(guān)系勺疼,這里的this并不一定是定義該屬性的對象)教寂。該函數(shù)的返回值會被用作屬性的值。
set:屬性的 setter 函數(shù)执庐,如果沒有 setter酪耕,則為?undefined。當(dāng)屬性值被修改時轨淌,會調(diào)用此函數(shù)迂烁。該方法接受一個參數(shù)(也就是被賦予的新值)看尼,會傳入賦值時的?this?對象。
以上就是對數(shù)據(jù)描述符的相關(guān)介紹及使用展示盟步,主要還是get 和 set 兩個訪問器屬性藏斩,因?yàn)榭梢詫?shí)現(xiàn) 模擬 vue中的 v-model 做數(shù)據(jù)雙向綁定,對觀看 vue 響應(yīng)式數(shù)據(jù)原理 的源碼部分有幫助呦却盘! 還有那句話:如有不對之處及不周之處請大佬們指出狰域,也希望對一些人有所幫助,咱們下次再會黄橘!