簡(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 設(shè)計(jì)模式學(xué)習(xí) Factory
通過接口實(shí)現(xiàn)工廠,這是通過List方式顯示RSS 等實(shí)現(xiàn)代碼。2009-07-07
使用JavaScript實(shí)現(xiàn)輪播圖效果
這篇文章主要為大家詳細(xì)介紹了使用JavaScript實(shí)現(xiàn)輪播圖效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-01-01
JavaScript數(shù)據(jù)結(jié)構(gòu)之優(yōu)先隊(duì)列與循環(huán)隊(duì)列實(shí)例詳解
這篇文章主要介紹了JavaScript數(shù)據(jù)結(jié)構(gòu)之優(yōu)先隊(duì)列與循環(huán)隊(duì)列,結(jié)合實(shí)例形式較為詳細(xì)的分析了javascrip數(shù)據(jù)結(jié)構(gòu)中優(yōu)先隊(duì)列與循環(huán)隊(duì)列的原理、定義與使用方法,需要的朋友可以參考下2017-10-10
JS實(shí)現(xiàn)關(guān)閉當(dāng)前頁(yè)而不彈出提示框的方法
這篇文章主要介紹了JS實(shí)現(xiàn)關(guān)閉當(dāng)前頁(yè)而不彈出提示框的方法,結(jié)合實(shí)例形式分析了JS操作頁(yè)面的打開、關(guān)閉及父頁(yè)面的關(guān)閉技巧,需要的朋友可以參考下2016-06-06
js中的for如何實(shí)現(xiàn)foreach中的遍歷
js中沒有foreach這個(gè)關(guān)鍵字,但是可以用var v in array來實(shí)現(xiàn)遍歷,下面有個(gè)不錯(cuò)的示例,大家可以參考下2014-05-05
JS實(shí)現(xiàn)滑動(dòng)菜單效果代碼(包括Tab,選項(xiàng)卡,橫向等效果)
這篇文章主要介紹了JS實(shí)現(xiàn)滑動(dòng)菜單效果代碼,以實(shí)例形式實(shí)現(xiàn)了包括Tab,選項(xiàng)卡,橫向等效果,非常簡(jiǎn)單實(shí)用,需要的朋友可以參考下2015-09-09
js實(shí)現(xiàn)將json數(shù)組顯示前臺(tái)table中
本文主要介紹了把JSON數(shù)組顯示在前臺(tái)的table中的方法。具有一定的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01

