對(duì)象的屬性描述符

Javascript描述符

屬性描述符

  • value
  • writable
  • enumerable
  • configurable

屬性訪問描述符(訪問器)

  • setter
  • getter

屬性描述符的使用

var obj = {
    key: "hello"
}

// 查看obj的屬性key的屬性描述符
console.log(Object.getOwnPropertyDescriptor(obj, "key")); //{value: "value", writable: true, enumerable: true, configurable: true}

// 設(shè)置obj的屬性key的屬性描述符
Object.defineProperty(obj, "key", {
    value: "newVal",    // 設(shè)置屬性的值
    writable: false,    // 設(shè)置屬性是否可寫
    enumerable: true,   // 設(shè)置屬性是否可枚舉(可用for ... in ...遍歷)
    configurable: true  // 設(shè)置屬性是否可配置(可用defineProperty設(shè)置)及刪除(delete key)
});

//設(shè)置常量屬性
Object.defineProperty(obj, "key", {
    writable: false,
    configurable: false
});

阻止對(duì)象擴(kuò)展

var obj = {
    a: 6
};

//阻止對(duì)象擴(kuò)展 
Object.preventExtensions(obj);

obj.b = 999;    //b無(wú)法被添加
console.log(obj);   //{a: 6}

密封對(duì)象

Object.seal(obj);
相當(dāng)于Object.preventExtensions(obj);及對(duì)obj對(duì)象的所有屬性的屬性描述符configurable改成false
即:對(duì)象不能添加和刪除屬性。

凍結(jié)對(duì)象

Object.freeze(obj);
相當(dāng)于
Object.seal(obj);及對(duì)obj對(duì)象的所有屬性的屬性描述符writable改成false
即對(duì)象不能添加和刪除屬性,也不能修改屬性的值神汹。

屬性訪問描述符

訪問描述符有兩種定義方式

var obj = {
    set a(val) {
        console.log("setting a...");
        this._a_ = val * 2;
    },
    get a() {
        console.log("getting a...")
        return this._a_;
    }
};

Object.defineProperty(obj, "b", {
    set: function(val) {
        console.log("setting b...");
        this._b_ = val;
    },
    get: function() {
        console.log("getting b...");
        return this._b_;
    }
});
obj.a = 2;  //setting a...
obj.b = 3;  //setting b...
obj.a;      //getting a...
obj.b;      //getting b...
設(shè)置了訪問器的對(duì)象

給對(duì)象定義屬性訪問描述符會(huì)在對(duì)象中創(chuàng)建不包含值的屬性,對(duì)這個(gè)屬性的訪問會(huì)自動(dòng)調(diào)用隱藏的函數(shù)(訪問器getter和setter)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市适室,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌举瑰,老刑警劉巖捣辆,帶你破解...
    沈念sama閱讀 217,907評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異此迅,居然都是意外死亡汽畴,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,987評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門耸序,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)忍些,“玉大人,你說(shuō)我怎么就攤上這事坎怪“瞻樱” “怎么了?”我有些...
    開封第一講書人閱讀 164,298評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵搅窿,是天一觀的道長(zhǎng)嘁酿。 經(jīng)常有香客問我,道長(zhǎng)男应,這世上最難降的妖魔是什么闹司? 我笑而不...
    開封第一講書人閱讀 58,586評(píng)論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮殉了,結(jié)果婚禮上开仰,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好众弓,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,633評(píng)論 6 392
  • 文/花漫 我一把揭開白布恩溅。 她就那樣靜靜地躺著,像睡著了一般谓娃。 火紅的嫁衣襯著肌膚如雪脚乡。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,488評(píng)論 1 302
  • 那天滨达,我揣著相機(jī)與錄音奶稠,去河邊找鬼。 笑死捡遍,一個(gè)胖子當(dāng)著我的面吹牛锌订,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播画株,決...
    沈念sama閱讀 40,275評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼辆飘,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了谓传?” 一聲冷哼從身側(cè)響起蜈项,我...
    開封第一講書人閱讀 39,176評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎续挟,沒想到半個(gè)月后紧卒,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,619評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡诗祸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,819評(píng)論 3 336
  • 正文 我和宋清朗相戀三年跑芳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贬媒。...
    茶點(diǎn)故事閱讀 39,932評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡聋亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出际乘,到底是詐尸還是另有隱情,我是刑警寧澤漂佩,帶...
    沈念sama閱讀 35,655評(píng)論 5 346
  • 正文 年R本政府宣布脖含,位于F島的核電站,受9級(jí)特大地震影響投蝉,放射性物質(zhì)發(fā)生泄漏养葵。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,265評(píng)論 3 329
  • 文/蒙蒙 一瘩缆、第九天 我趴在偏房一處隱蔽的房頂上張望关拒。 院中可真熱鬧,春花似錦、人聲如沸着绊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,871評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)归露。三九已至洲脂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間剧包,已是汗流浹背恐锦。 一陣腳步聲響...
    開封第一講書人閱讀 32,994評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留疆液,地道東北人一铅。 一個(gè)月前我還...
    沈念sama閱讀 48,095評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像堕油,于是被迫代替她去往敵國(guó)和親潘飘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,884評(píng)論 2 354

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

  • 本文主要學(xué)習(xí)一下 JavaScript 中對(duì)象的屬性描述符馍迄。 從 ES5 開始福也,所有的屬性都具備了屬性描述符。下面...
    VioletJack閱讀 318評(píng)論 0 1
  • 參考文章:屬性描述對(duì)象 概述 JavaScript 提供了一個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)攀圈,用來(lái)描述對(duì)象的屬性暴凑,控制它的行為,比如...
    chrisghb閱讀 275評(píng)論 0 0
  • (注1:如果有問題歡迎留言探討赘来,一起學(xué)習(xí)现喳!轉(zhuǎn)載請(qǐng)注明出處,喜歡可以點(diǎn)個(gè)贊哦H健)(注2:更多內(nèi)容請(qǐng)查看我的目錄嗦篱。) ...
    love丁酥酥閱讀 1,859評(píng)論 4 7
  • 從ES5開始,對(duì)象的每一個(gè)屬性都具備了屬性描述符幌缝。 對(duì)u象的屬性描述符是真的常見灸促,這里就簡(jiǎn)要概括一下吧。對(duì)象的屬性...
    BIGHAI閱讀 348評(píng)論 0 0
  • 概述 JavaScript提供了一個(gè)內(nèi)部數(shù)據(jù)結(jié)構(gòu)涵卵,用來(lái)描述一個(gè)對(duì)象的屬性的行為浴栽,控制它的行為。這被稱為“屬性描述對(duì)...
    zjh111閱讀 724評(píng)論 0 0