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

資訊專欄INFORMATION COLUMN

JavaScript 關(guān)于ES6 const 深入理解

hzc / 2165人閱讀

摘要:不可變的只是這個(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

相關(guān)文章

  • 深入理解ES6》筆記——Symbol和Symbol屬性(6)

    摘要:設(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只能...

    heartFollower 評(píng)論0 收藏0
  • 深入理解ES6》筆記——塊級(jí)作用域綁定(1)

    摘要:沒有聲明的情況和都能夠聲明塊級(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聲...

    2bdenny 評(píng)論0 收藏0
  • ES6-7

    摘要:的翻譯文檔由的維護(hù)很多人說(shuō),阮老師已經(jīng)有一本關(guān)于的書了入門,覺得看看這本書就足夠了。前端的異步解決方案之和異步編程模式在前端開發(fā)過(guò)程中,顯得越來(lái)越重要。為了讓編程更美好,我們就需要引入來(lái)降低異步編程的復(fù)雜性。 JavaScript Promise 迷你書(中文版) 超詳細(xì)介紹promise的gitbook,看完再不會(huì)promise...... 本書的目的是以目前還在制定中的ECMASc...

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

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

0條評(píng)論

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