簡(jiǎn)述凍結(jié)JS對(duì)象方法技術(shù)
冰封的美人——凍結(jié)JS對(duì)象
看到這個(gè)標(biāo)題你可能會(huì)很奇怪凍結(jié)JS對(duì)象,?。∮钟|碰到我的知識(shí)盲區(qū)了,那么首先來了解一下JS對(duì)象
JS對(duì)象
js對(duì)象是普通對(duì)象,鍵值對(duì)方式,且其屬性不加引號(hào),表示方法如下,對(duì)象內(nèi)有對(duì)象屬性,對(duì)象方法和普通的對(duì)象概念相同
var obj = { name : "cxy", age : "18" }
而我們修改對(duì)象的屬性,僅僅需要obj.name = "juejin"
即可console.log(obj.name)
打印出來即可看到修改效果,那么凍結(jié)又是什么意思呢?我們來學(xué)習(xí)一下Object.freeze()
Object.freeze
翻譯下freeze的意思,由此得知freeze()
是用來凍結(jié)對(duì)象的方法,我們只需要將我們要凍結(jié)的目標(biāo)對(duì)象作為參數(shù)傳遞給他,那么該對(duì)象就會(huì)被凍結(jié)
const iceObj = Object.freeze(obj)
這樣iceObj
就是被凍結(jié)的對(duì)象,那么凍結(jié)又是什么概念呢?我們修改一下對(duì)象的age
屬性iceObj.age = "19"
,然后再打印一下console.log(iceObj.age)
我們會(huì)發(fā)現(xiàn),omygod,依舊是18,不愧是永遠(yuǎn)十八歲的冰封美人,除此之外還有一個(gè)檢驗(yàn)對(duì)象凍結(jié)的方法即Object.isFrozen
,返回值為布爾值
不可凍結(jié)的對(duì)象
又有新的問題了,難不成所有的對(duì)象都可以被凍結(jié)嗎?nonono,Object.freeze()
不可凍結(jié)嵌套對(duì)象,依舊是那個(gè)對(duì)象,但是有一個(gè)son屬性本身又是一個(gè)對(duì)象
var obj = { name : "cxy", age : "18" son : { name : "son", age : "1" } }
我們來修改并打印一下son中的name屬性,會(huì)發(fā)現(xiàn)其屬性值是修改后的值,所以說Object.freeze()
并不是所有對(duì)象都能凍住的,當(dāng)然其object.freeze()
還可以凍結(jié)數(shù)組,大家可以定義一個(gè)數(shù)組,凍結(jié)之后,使用下標(biāo)修改看看效果如何,除此之外還有一共凍結(jié)方法即object.seal()
它和object.freeze()
有差別,我們來看一下
Object.seal
var obj = { name : "cxy", age : "18" } const iceObj = Object.seal(obj) iceObj.name = "juejin" delete iceObj.age console.log(iceObj)
依舊是那個(gè)對(duì)象,我們先使用object.seal()
凍結(jié)再執(zhí)行修改name屬性,刪除age屬性的操作,最后打印我們會(huì)發(fā)現(xiàn)name屬性成功被修改,但是age屬性沒有被刪除,這就是和freeze()
不一樣的地方,即可以修改屬性值,但是不可以刪除屬性值,當(dāng)然同樣它還有一個(gè)檢驗(yàn)對(duì)象凍結(jié)的方法即Object.isSealed
,返回值為布爾值,最后還有一種凍結(jié)的方法即Object.preventExtensions()
Object.preventExtensions
Object.preventExtensions
是凍結(jié)對(duì)象增加屬性的能力
var obj = { name : "cxy", age : "18" } const iceObj = Object.preventExtensions(obj) iceObj.weight = "180" console.log(iceObj)
上述代碼是為obj新增weight屬性,但是打印出來后并沒有出現(xiàn)該屬性,說明對(duì)象添加屬性方法被凍結(jié)了。
到此這篇關(guān)于簡(jiǎn)述凍結(jié)JS對(duì)象方法技術(shù)的文章就介紹到這了,更多相關(guān)凍結(jié)JS對(duì)象內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
JavaScript出現(xiàn)setTimeout倒計(jì)時(shí)誤差的原因分析
setTimeout?倒計(jì)時(shí)誤差的出現(xiàn)主要與?JavaScript?的事件循環(huán)機(jī)制和計(jì)時(shí)器的執(zhí)行方式有關(guān),本文就來和大家講講具體出現(xiàn)的原因以及解決方法,需要的可以參考一下2023-06-06JavaScript 中的運(yùn)算符和表達(dá)式介紹
這篇文章主要介紹了JavaScript 中的運(yùn)算符和表達(dá)式介紹,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-09-09JS實(shí)現(xiàn)表單全選以及取消全選實(shí)例
這篇文章主要為大家詳細(xì)介紹了JS實(shí)現(xiàn)表單全選以及取消全選實(shí)例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03JavaScript中window.showModalDialog()用法詳解
這篇文章主要介紹了JavaScript中window.showModalDialog()用法詳解,需要的朋友可以參考下2014-12-12JS對(duì)象轉(zhuǎn)換為Jquery對(duì)象實(shí)現(xiàn)代碼
很多新手朋友們都不知道js對(duì)象如何轉(zhuǎn)換為jquery對(duì)象,其實(shí)很簡(jiǎn)單,下面有個(gè)不錯(cuò)的示例,感興趣的朋友可以參考下2013-12-12JS小功能(列表頁(yè)面隔行變色)簡(jiǎn)單實(shí)現(xiàn)
這篇文章主要介紹了JS列表頁(yè)面隔行變色簡(jiǎn)單實(shí)現(xiàn),有需要的朋友可以參考一下2013-11-11