無標(biāo)題文章

一膘婶、為什么需要引入防篡改對象蛀醉?


1.

為什么?JavaScript 共享的本質(zhì)一直是開發(fā)人員心頭的痛,因?yàn)槿魏螌ο蠖伎梢员辉谕画h(huán)境中運(yùn)行的代碼修改脊岳。


2.

解決:我們可以手工設(shè)置每個對象屬性的

[[Configurable]]

[[Writable]]

[[Enumerable]]

捻悯、

[[Value]]

旦签、

[[Get]]

以及

[[Set]]

特性,同樣我們可以設(shè)置對象的行為醉锄。


一、不可擴(kuò)展的對象


1.

默認(rèn)情況下恳不,所有對象都是可以擴(kuò)展的烟勋。也就是說,任何時候都可以向?qū)ο笾刑砑訉傩院头椒?/p>

??????? var o = {


??????????? name :

"zhang"


??????? }


??????? o.age =

23

;


??????? alert(o.age);?????? //

23


2.

使用Object.preventExtensions()方法可以改變這個行為卵惦,讓你不能再給對象添加屬性和方法沮尿。


??????? var o = {


??????????? name :

"zhang"


??????? }


??????? alert(Object.isExtensible(o));? //

true


??????? Object.preventExtensions(o);


??????? o.age =

23

;


??????? alert(o.age);?????? // undefined


??????? alert(Object.isExtensible(o));? //

false


二、密封的對象


??? 密封對象不可擴(kuò)展赴邻,而且已有成員的

[[Configurable]]

特性將被設(shè)置為

false

啡捶。這就意味著不能刪除屬性和方法,因?yàn)椴荒苁褂肙bject.defineProperty()把數(shù)據(jù)屬性修改為訪問器屬性徒溪,或者相反金顿。屬性值是可以修改的。


??????? var o = {


??????????? name :

"zhang"


??????? }


??????? // alert(Object.isExtensible(o));?? //

true


??????? // alert(Object.isSealed(o));?? //

false


??????? // 不能添加屬性和方法


??????? Object.seal(o);


??????? o.age =

23

;


??????? // alert(o.age);??????? // undefined


??????? // 不能刪除屬性


??????? delete o.name;


??????? // alert(o.name);?????? // zhang


??????? // 可以修改已有屬性的值


??????? o.name =

"li"

;


??????? alert(o.name);


??????? alert(Object.isExtensible(o));? //

false


??????? alert(Object.isSealed(o));? //

true


三渠概、凍結(jié)的對象


??? 凍結(jié)的對象既不可擴(kuò)展嫂拴,又是密封的,而且對象數(shù)據(jù)屬性的

[[Writable]]

特性會被設(shè)置為

false

猪狈。如果定義

[[Set]]

函數(shù)辩恼,訪問器屬性仍然是可寫的谓形。


??????? var o = {


??????????? name :

"zhang"


??????? }


??????? // alert(Object.isExtensible(o));?? //

true


??????? // alert(Object.isSealed(o));?? //

false


??????? // alert(Object.isFrozen(o));?? //

false


??????? // 不能添加屬性和方法


??????? Object.freeze(o);


??????? o.age =

23

;


??????? // alert(o.age);??????? // undefined


??????? // 不能刪除屬性


??????? delete o.name;


??????? // alert(o.name);?????? // zhang


??????? // 不可以修改屬性


??????? o.name =

"li"

;


??????? // alert(o.name);


??????? alert(Object.isExtensible(o));? //

false


??????? alert(Object.isSealed(o));? //

true


??????? alert(Object.isFrozen(o));? //

true

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末寒跳,一起剝皮案震驚了整個濱河市竹椒,隨后出現(xiàn)的幾起案子胸完,更是在濱河造成了極大的恐慌,老刑警劉巖舶吗,帶你破解...
    沈念sama閱讀 211,639評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件誓琼,死亡現(xiàn)場離奇詭異,居然都是意外死亡腹侣,警方通過查閱死者的電腦和手機(jī)傲隶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,277評論 3 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來复濒,“玉大人乒省,你說我怎么就攤上這事≡曳海” “怎么了蛆封?”我有些...
    開封第一講書人閱讀 157,221評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盏筐。 經(jīng)常有香客問我砸讳,道長楷拳,這世上最難降的妖魔是什么吏奸? 我笑而不...
    開封第一講書人閱讀 56,474評論 1 283
  • 正文 為了忘掉前任奋蔚,我火速辦了婚禮烈钞,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘毯欣。我一直安慰自己,他們只是感情好腹忽,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,570評論 6 386
  • 文/花漫 我一把揭開白布窘奏。 她就那樣靜靜地躺著葫录,像睡著了一般。 火紅的嫁衣襯著肌膚如雪米同。 梳的紋絲不亂的頭發(fā)上面粮,一...
    開封第一講書人閱讀 49,816評論 1 290
  • 那天,我揣著相機(jī)與錄音但金,去河邊找鬼冷溃。 笑死,一個胖子當(dāng)著我的面吹牛似枕,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播褪迟,決...
    沈念sama閱讀 38,957評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼掀抹!你這毒婦竟也來了心俗?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,718評論 0 266
  • 序言:老撾萬榮一對情侶失蹤揪利,失蹤者是張志新(化名)和其女友劉穎狠持,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體甜刻,經(jīng)...
    沈念sama閱讀 44,176評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡正勒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,511評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了尿招。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阱驾。...
    茶點(diǎn)故事閱讀 38,646評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖丧荐,靈堂內(nèi)的尸體忽然破棺而出喧枷,到底是詐尸還是另有隱情,我是刑警寧澤隧甚,帶...
    沈念sama閱讀 34,322評論 4 330
  • 正文 年R本政府宣布戚扳,位于F島的核電站,受9級特大地震影響珠增,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蒂教,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,934評論 3 313
  • 文/蒙蒙 一凝垛、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧苔严,春花似錦孤澎、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,755評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至丸凭,卻和暖如春腕铸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背狠裹。 一陣腳步聲響...
    開封第一講書人閱讀 31,987評論 1 266
  • 我被黑心中介騙來泰國打工涛菠, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人俗冻。 一個月前我還...
    沈念sama閱讀 46,358評論 2 360
  • 正文 我出身青樓迄薄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親死姚。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,514評論 2 348

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

  • 第5章 引用類型(返回首頁) 本章內(nèi)容 使用對象 創(chuàng)建并操作數(shù)組 理解基本的JavaScript類型 使用基本類型...
    大學(xué)一百閱讀 3,216評論 0 4
  • ##**理解對象**## --- ###**屬性類型** > JavaScript中有兩種屬性類型 分別是 數(shù)據(jù)屬...
    nullunde閱讀 301評論 0 0
  • var a = 1; console.log(typeof a);// 'number' var b = '1';...
    zdnexus閱讀 325評論 0 0
  • 一账劲、理解對象 1.創(chuàng)建 ①構(gòu)造函數(shù) new Object ②對象字面量 var o = {}; 2.屬性類型 ①數(shù)...
    duJing閱讀 417評論 0 0
  • 轉(zhuǎn)至元數(shù)據(jù)結(jié)尾創(chuàng)建: 董瀟偉瀑焦,最新修改于: 十二月 23, 2016 轉(zhuǎn)至元數(shù)據(jù)起始第一章:isa和Class一....
    40c0490e5268閱讀 1,690評論 0 9