成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Javascript(Object.seal)

godiscoder / 1667人閱讀

摘要:使用小細(xì)節(jié)這幾天遇到一個(gè)坑,講的是保護(hù)對(duì)象的其中一種方法。封閉方法可以讓一個(gè)對(duì)象密封,并返回被密封后的對(duì)象。但是有個(gè)例外,允許非配置屬性從可寫(xiě)狀態(tài)變成只讀狀態(tài),因?yàn)閿?shù)組的屬性總是可寫(xiě)的且不可配置。如果沒(méi)有這個(gè)例外就不能凍結(jié)數(shù)組。

Javascript(Object.seal)&使用小細(xì)節(jié)

這幾天遇到一個(gè)坑,講的是js保護(hù)對(duì)象的其中一種方法。封閉(Sealing)
Object.seal(obj)

Object.seal()
方法可以讓一個(gè)對(duì)象密封,并返回被密封后的對(duì)象。密封對(duì)象是指那些不能添加新的屬性,不能刪除已有屬性,以及不能修改已有屬性的可枚舉性、可配置性、可寫(xiě)性,但可能可以修改已有屬性的值的對(duì)象。

調(diào)用了seal這個(gè)函數(shù),會(huì)把屬性的configurable設(shè)置為false,也就是不能修改他的屬性特性。
不知道各位有沒(méi)有發(fā)現(xiàn)其中有一個(gè)小小的問(wèn)題。configurable明明設(shè)置為false,但是我還是可以修改它的可寫(xiě)性,writable從原來(lái)的true->false。
后來(lái)經(jīng)過(guò)一番查書(shū)之后,才發(fā)現(xiàn)一個(gè)小小的細(xì)節(jié)。

configurable持有一個(gè)布爾值,如果它是false,那么你不能刪除、改變屬性的人和特性,除了value,也不能把它從數(shù)據(jù)屬性轉(zhuǎn)換為訪問(wèn)其屬性,反之亦然,它控制著屬性元數(shù)據(jù)的可寫(xiě)性。但是有個(gè)例外,js允許非配置屬性從可寫(xiě)狀態(tài)變成只讀狀態(tài),因?yàn)閿?shù)組的屬性length總是可寫(xiě)的且不可配置。如果沒(méi)有這個(gè)例外就不能凍結(jié)數(shù)組。

所以如果是一開(kāi)始使用默認(rèn)的可寫(xiě)性writable=true;他是可以被允許在configurable為false的時(shí)候改變成為false的。那這時(shí)候問(wèn)題又來(lái)了, 如果我已經(jīng)顯性設(shè)置了可寫(xiě)性為true呢?

t.foo也是被改變成為false,所以說(shuō)明不管顯隱性聲明可寫(xiě)行,在不可配置的情況下依然可以總是可以被從可讀可寫(xiě)改為只讀。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/80311.html

相關(guān)文章

  • 如何禁止JavaScript對(duì)象重寫(xiě)?

    摘要:譯者按使用和,可以禁止重寫(xiě)對(duì)象。引入了一些方法,允許開(kāi)發(fā)者限制對(duì)象重寫(xiě)。不要重寫(xiě)他人的對(duì)象不要重寫(xiě)他人的對(duì)象,這是的黃金法則。如果你修改的是對(duì)象比如,這會(huì)導(dǎo)致非常嚴(yán)重的后果。 譯者按: 使用Object.preventExtensions()、Object.seal()和Object.freeze(),可以禁止重寫(xiě)JavaScript對(duì)象。 譯者:Fundebug 原文:Preve...

    jubincn 評(píng)論0 收藏0
  • javascript中對(duì)象的常用方法,深克隆和淺克隆以及凍結(jié),擴(kuò)展,密封三大屬性的區(qū)別

    摘要:它將返回目標(biāo)對(duì)象。封閉對(duì)象方法判斷一個(gè)對(duì)象是否被密封。為源對(duì)象為修改的屬性名或設(shè)置,同上方法返回一個(gè)給定對(duì)象自身可枚舉屬性的鍵值對(duì)數(shù)組方法返回指定對(duì)象上一個(gè)自有屬性對(duì)應(yīng)的屬性描述符方法判斷兩個(gè)值是否是相同的值。 對(duì)象作為引用類(lèi)型,工作中免不了復(fù)制對(duì)象,下面來(lái)看看克隆的方法 Object.assign() 方法用于將所有可枚舉屬性的值從一個(gè)或多個(gè)源對(duì)象復(fù)制到目標(biāo)對(duì)象。它將返回目標(biāo)對(duì)象。淺...

    gplane 評(píng)論0 收藏0
  • JavaScript設(shè)置對(duì)象的不可拓展

    摘要:一般來(lái)說(shuō),默認(rèn)情況下,對(duì)象都是可拓展的,我們可以為其屬性進(jìn)行增刪改等操作,也可以更改他們?cè)偷闹赶?,如何讓一個(gè)對(duì)象變得不可拓展呢,我們可以使用提供的幾個(gè)方法,來(lái)保證鎖定的對(duì)象是不可拓展的可以鎖定對(duì)象,設(shè)置對(duì)象的不可拓展,可以阻止為對(duì)象添加新 一般來(lái)說(shuō),默認(rèn)情況下,對(duì)象都是可拓展的,我們可以為其屬性進(jìn)行增刪改等操作,也可以更改他們?cè)偷闹赶颍绾巫屢粋€(gè)對(duì)象變得不可拓展呢,我們可以使用ES...

    freewolf 評(píng)論0 收藏0
  • Object 的各種方法

    摘要:等同于構(gòu)造函數(shù)與的用法很相似,幾乎一模一樣。實(shí)例對(duì)象的方法接受一個(gè)字符串作為參數(shù),返回一個(gè)布爾值,表示該實(shí)例對(duì)象自身是否具有該屬性。等同于方法生成的對(duì)象,繼承了它的原型對(duì)象的構(gòu)造函數(shù)。 分類(lèi) Object() 函數(shù) Object 本身是一個(gè)函數(shù),用來(lái)將任意值轉(zhuǎn)為對(duì)象。 如果參數(shù)為空(或者為 undefined 和 null),Object() 返回一個(gè)空對(duì)象。 var obj = Ob...

    gghyoo 評(píng)論0 收藏0
  • 標(biāo)準(zhǔn)庫(kù)(二)屬性描述對(duì)象

    摘要:也就是說(shuō),屬性控制了屬性描述對(duì)象的可寫(xiě)性??杀闅v性返回一個(gè)布爾值,表示目標(biāo)屬性是否可遍歷運(yùn)算符不管某個(gè)屬性是對(duì)象自身的還是繼承的,都會(huì)返回。上面的寫(xiě)法與定義屬性描述對(duì)象是等價(jià)的,而且使用更廣泛。 屬性描述對(duì)象 概述Object.getOwnPropertyDescriptor()Object.getOwnPropertyNames()Object.defineProperty(),Ob...

    MartinDai 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<