久久久久久久视色,久久电影免费精品,中文亚洲欧美乱码在线观看,在线免费播放AV片

<center id="vfaef"><input id="vfaef"><table id="vfaef"></table></input></center>

    <p id="vfaef"><kbd id="vfaef"></kbd></p>

    
    
    <pre id="vfaef"><u id="vfaef"></u></pre>

      <thead id="vfaef"><input id="vfaef"></input></thead>

    1. 站長(zhǎng)資訊網(wǎng)
      最全最豐富的資訊網(wǎng)站

      了解JavaScript中Object.freeze()與const之間的區(qū)別

      了解JavaScript中Object.freeze()與const之間的區(qū)別

      相關(guān)學(xué)習(xí)推薦:javascript視頻教程

      自發(fā)布以來(lái),ES6為JavaScript帶來(lái)了一些新功能和方法。這些功能可以更好地改善我們作為JavaScript開(kāi)發(fā)人員的工作流程和生產(chǎn)力。這些新功能包括 Object.freeze() 方法和 const。

      在少數(shù)開(kāi)發(fā)者尤其是新手中,有人認(rèn)為這兩個(gè)功能的工作原理是一樣的,但NO,它們不是。Object.freeze()const 的工作原理不同。讓我來(lái)告訴你怎么做!

      概況

      constObject.freeze() 完全不同。

      • const 的行為就像 let。唯一的區(qū)別是,它定義了無(wú)法重新分配的變量。const 聲明的變量是塊范圍的,而不是函數(shù)范圍的,就像用 var 聲明的變量一樣。
      • Object.freeze() 將一個(gè)對(duì)象作為參數(shù),并返回與不可變對(duì)象相同的對(duì)象。這意味著不能添加,刪除或更改對(duì)象的任何屬性。

      示例

      const

      const user = 'Bolaji Ayodeji'user = 'Joe Nash'復(fù)制代碼

      這將引發(fā) Uncaught TypeError,因?yàn)槲覀冊(cè)噲D重新分配使用 const 關(guān)鍵字聲明的變量 user。這無(wú)效。

      了解JavaScript中Object.freeze()與const之間的區(qū)別

      最初,這將適用于 varlet ,但不適用于 const。

      const的問(wèn)題

      當(dāng)使用對(duì)象時(shí),使用const僅防止重新分配,而不防止不變性。 (防止更改其屬性的能力)

      考慮下面的代碼。我們已經(jīng)使用 const 關(guān)鍵字聲明了一個(gè)變量,并為其分配了一個(gè)名為 user 的對(duì)象。

      const user = {  first_name: 'bolaji',  last_name: 'ayodeji',  email: 'hi@bolajiayodeji.com',  net_worth: 2000}  user.last_name = 'Samson';// 這行得通,user仍然可變!user.net_worth = 983265975975950;// 這也行得通,用戶(hù)仍然可變且變得富有 :)!console.log(user);  // user被突變復(fù)制代碼
      了解JavaScript中Object.freeze()與const之間的區(qū)別

      盡管我們無(wú)法重新分配名為object的變量,但是我們?nèi)匀豢梢詫?duì)對(duì)象本身進(jìn)行突變。

      const user = {  user_name: 'bolajiayodeji'}// won't work復(fù)制代碼
      了解JavaScript中Object.freeze()與const之間的區(qū)別

      我們絕對(duì)希望對(duì)象具有無(wú)法修改或刪除的屬性。const 無(wú)法做到這一點(diǎn),這就是 Object.freeze() 拯救我們的地方。

      看一下Object.freeze()

      要禁用對(duì)對(duì)象的任何更改,我們需要 Object.freeze()。

      const user = {  first_name: 'bolaji',  last_name: 'ayodeji',  email: 'hi@bolajiayodeji.com',  net_worth: 2000}Object.freeze(user);  user.last_name = 'Samson';// 這行不通,user仍然是一成不變的!user.net_worth = 983265975975950;// 這也行不通,user仍然是一成不變的,仍然無(wú)法使用 :(!console.log(user);  // user is immutated復(fù)制代碼
      了解JavaScript中Object.freeze()與const之間的區(qū)別

      具有嵌套屬性的對(duì)象實(shí)際上并未凍結(jié)

      嗯,Object.freeze() 有點(diǎn)淺顯,你需要在嵌套對(duì)象上應(yīng)用它來(lái)遞歸保護(hù)它們。

      const user = {  first_name: 'bolaji',  last_name: 'ayodeji',  contact: {    email: 'hi@bolajiayodeji.com',    telephone: 08109445504,   } }Object.freeze(user);  user.last_name = 'Samson';// 這行不通,user仍然是一成不變的!user.contact.telephone = 07054394926;// 這將起作用,因?yàn)榍短讓?duì)象未凍結(jié)console.log(user);復(fù)制代碼
      了解JavaScript中Object.freeze()與const之間的區(qū)別

      因此,當(dāng) Object.freeze() 具有嵌套的屬性時(shí),它不會(huì)完全凍結(jié)它。

      要完全凍結(jié)對(duì)象及其嵌套屬性,你可以編寫(xiě)自己的庫(kù)或使用已創(chuàng)建的庫(kù),例如Deepfreeze或immutable-js

      總結(jié)

      constObject.freeze() 不同,const 防止重新分配,而 Object.freeze() 防止可變性。

      想了解

      贊(0)
      分享到: 更多 (0)
      網(wǎng)站地圖   滬ICP備18035694號(hào)-2    滬公網(wǎng)安備31011702889846號(hào)