摘要:不可變的只是這個(gè)地址,即不能把指向另一個(gè)地址,但對(duì)象本身是可變的,所以依然可以為其添加新屬性。在擴(kuò)展一次,如果是一個(gè)多層對(duì)象可以如下所寫可以徹底鎖死多維對(duì)象。。。。
前端面試大坑千千萬(wàn),填完一個(gè)是一個(gè)
關(guān)于ES6 const用法
眾所周知,const聲明之后的變量不可以修改,比如:
const name = "lijk"; name = "lijks" //linshi.html:15 Uncaught SyntaxError: Identifier "name" has already been declared
但是今天面試官提出了,如果const 一個(gè)object對(duì)象的話,是否可以修改屬性值,懵逼中...
被懟回來(lái)之后回家鍵入了:
const objs = {name:"lijk"} objs.name = "lijks"
沒有報(bào)錯(cuò)???????
什么情況?經(jīng)過(guò)一頓查詢之后得知
上面代碼中,常量objs 儲(chǔ)存的是一個(gè)地址,這個(gè)地址指向一個(gè)對(duì)象。不可變的只是這個(gè)地址,即不能把objs 指向另一個(gè)地址,但對(duì)象本身是可變的,所以依然可以為其添加新屬性。
如果如下編寫
const objs = {name:"lijk"} objs= {name:"lijks"}
恭喜你,你要的錯(cuò)誤來(lái)了,正應(yīng)了如上所述,const的obj是指向Object一個(gè)指針(這塊可以去看原型鏈部分),對(duì)象本身是可以修改的,但是指針不能。
PS:我是個(gè)有脾氣的人,我如果十分想凍結(jié)這個(gè)對(duì)象呢?ES6為我們提供了一個(gè)新方法
const objs = Object.freeze({name:"lijk"}) objs.name = "lijks"
如上所示,在非嚴(yán)格情況下第二行代碼是無(wú)效的
在嚴(yán)格模式(use strict)下,第二行部分會(huì)報(bào)錯(cuò)。
在擴(kuò)展一次,如果object是一個(gè)多層對(duì)象???
可以如下所寫:
const freezeObjs = (obj) =>{ Object.freeze(obj); Object.keys(obj).forEach((key,i) => { if(typeOf obj[key] === "object"){ freezeObjs(obj[key]); } }) }
可以徹底鎖死多維對(duì)象。。。。
填坑完畢.
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/109565.html
摘要:設(shè)置對(duì)象屬性只讀。提供了一個(gè)注冊(cè)機(jī)制,當(dāng)你注冊(cè)之后,就能在全局共享注冊(cè)表里面的。的注冊(cè)表和對(duì)象表很像,都是結(jié)構(gòu),只不過(guò)這個(gè)是值。語(yǔ)法只有一個(gè)參數(shù),返回的是從注冊(cè)表獲取全局共享的注意如果要防止命名重復(fù)問(wèn)題,可以加上前綴。 還記得對(duì)象Object嗎? let obj = { a: 1 } 對(duì)象的格式: Object { key: value } 在ES5的時(shí)代,對(duì)象的key只能...
摘要:沒有聲明的情況和都能夠聲明塊級(jí)作用域,用法和是類似的,的特點(diǎn)是不會(huì)變量提升,而是被鎖在當(dāng)前塊中。聲明常量,一旦聲明,不可更改,而且常量必須初始化賦值。臨時(shí)死區(qū)的意思是在當(dāng)前作用域的塊內(nèi),在聲明變量前的區(qū)域叫做臨時(shí)死區(qū)。 本章涉及3個(gè)知識(shí)點(diǎn),var、let、const,現(xiàn)在讓我們了解3個(gè)關(guān)鍵字的特性和使用方法。 var JavaScript中,我們通常說(shuō)的作用域是函數(shù)作用域,使用var聲...
摘要:的翻譯文檔由的維護(hù)很多人說(shuō),阮老師已經(jīng)有一本關(guān)于的書了入門,覺得看看這本書就足夠了。前端的異步解決方案之和異步編程模式在前端開發(fā)過(guò)程中,顯得越來(lái)越重要。為了讓編程更美好,我們就需要引入來(lái)降低異步編程的復(fù)雜性。 JavaScript Promise 迷你書(中文版) 超詳細(xì)介紹promise的gitbook,看完再不會(huì)promise...... 本書的目的是以目前還在制定中的ECMASc...
閱讀 1105·2023-04-25 14:35
閱讀 2842·2021-11-16 11:45
閱讀 3443·2021-09-04 16:48
閱讀 2197·2021-08-10 09:43
閱讀 541·2019-08-30 13:17
閱讀 1636·2019-08-29 13:27
閱讀 906·2019-08-26 13:58
閱讀 2166·2019-08-26 13:48