摘要:與相比,這些功能更好地改善了我們的工作流程。一些開發(fā)人員尤其是新手們認(rèn)為這兩個(gè)功能的工作方式相同,但并不是。的行為類似于,唯一的區(qū)別是它定義了一個(gè)無法重新分配的變量。我們使用聲明了一個(gè)變量,并為它分配了一個(gè)名為的對象。
翻譯:瘋狂的技術(shù)宅
https://medium.freecodecamp.o...
本文首發(fā)微信公眾號:前端先鋒
歡迎關(guān)注,每天都給你推送新鮮的前端技術(shù)文章
ES6 自發(fā)布以來為 JavaScript 帶來了一些新功能和方法。與 JavaScript 相比,這些功能更好地改善了我們的工作流程。這些新功能包括 Object.freeze() 方法和 const。
一些開發(fā)人員尤其是新手們認(rèn)為這兩個(gè)功能的工作方式相同,但并不是。 Object.freeze() 和 const 的工作方式是不同的。
概述const和Object.freeze()完全不同。
const 的行為類似于 let,唯一的區(qū)別是它定義了一個(gè)無法重新分配的變量。由 const 聲明的變量是塊作用域,而不是像 var那樣的函數(shù)作用域
Object.freeze() 將一個(gè)對象作為參數(shù),并返回與不可變對象相同的對象。這意味著你不能添加、刪除或更改對象的屬性。
可變對象具有可以更改的屬性。不可變的對象在創(chuàng)建對象后沒有可以更改的屬性。例子: Const
const user = "Bolaji Ayodeji" user = "Joe Nash"
這將拋出一個(gè) Uncaught TypeError,因?yàn)槲覀冊噲D重新給用 const 關(guān)鍵字聲明的變量 user 賦值。這是沒用的。
最初,這適用于 var 或 let ,但不適用于const
const的問題使用對象時(shí),使用 const 僅阻止重新分配,而不是不可變性(能夠阻止更改其屬性)。
請考慮以下代碼。我們使用 const 聲明了一個(gè)變量,并為它分配了一個(gè)名為 user 的對象。
const user = { first_name: "bolaji", last_name: "ayodeji", email: "[email protected]", net_worth: 2000 } user.last_name = "Samson"; // this would work, user is still mutable! user.net_worth = 983265975975950; // this would work too, user is still mutable and getting rich :)! console.log(user); // user is mutated
雖然我們無法重新分配這個(gè)名為 object 的變量,但仍然可以改變對象本身。
const user = { user_name: "bolajiayodeji" } // won"t work
我們肯定希望對象具有無法修改或刪除的屬性。但是 const 做不到,這就是 Object.freeze() 存在的意義
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/109532.html
摘要:一些開發(fā)人員特別是新手們會認(rèn)為這兩個(gè)功能的工作方式是一樣的,但其實(shí)并不是。的問題使用聲明的對象僅能阻止其重新分配,但是并不能使其聲明的對象具有不可變性能夠阻止更改其屬性。因此,當(dāng)具有嵌套屬性的對象時(shí),并不能完全凍結(jié)對象。 原文:The differences between Object.freeze() vs Const in JavaScript?作者:Bolaji Ayodeji...
摘要:它將返回目標(biāo)對象。封閉對象方法判斷一個(gè)對象是否被密封。為源對象為修改的屬性名或設(shè)置,同上方法返回一個(gè)給定對象自身可枚舉屬性的鍵值對數(shù)組方法返回指定對象上一個(gè)自有屬性對應(yīng)的屬性描述符方法判斷兩個(gè)值是否是相同的值。 對象作為引用類型,工作中免不了復(fù)制對象,下面來看看克隆的方法 Object.assign() 方法用于將所有可枚舉屬性的值從一個(gè)或多個(gè)源對象復(fù)制到目標(biāo)對象。它將返回目標(biāo)對象。淺...
摘要:沒有模塊化的支持,使用開發(fā)大型應(yīng)用將舉步維艱,所以經(jīng)過大量的實(shí)踐,社區(qū)制定了一些模塊加載方案,最主要的有運(yùn)行于瀏覽器的方案和運(yùn)行于以為代表的服務(wù)端的方案。該方法返回被凍結(jié)的對象。 背景 ES Module是JavaScript在ES2015版本開始提供的語言標(biāo)準(zhǔn)級別的模塊化方案,在此之前JavaScript一直沒有語言級別的模塊化體系。沒有模塊化的支持,使用JavaScript開發(fā)大型...
摘要:中的所有對象都來自父的構(gòu)造函數(shù)。不同于數(shù)組的原型方法例如和只能被數(shù)組實(shí)例使用,對象方法直接來自構(gòu)造函數(shù),并使用對象實(shí)例作為參數(shù)。這稱為靜態(tài)方法。創(chuàng)建對象的鍵值對的嵌套數(shù)組??捎糜诖_定對象是否已凍結(jié),并返回布爾值。 原文:How To Use Object Methods in JavaScript作者:Tania Rascia譯者:博軒 介紹 JavaScript 中,對象是 鍵/值 ...
摘要:函數(shù)式編程導(dǎo)論從屬于筆者的前端入門與工程實(shí)踐。函數(shù)式編程即是在軟件開發(fā)的工程中避免使用共享狀態(tài)可變狀態(tài)以及副作用。 JavaScript 函數(shù)式編程導(dǎo)論從屬于筆者的Web 前端入門與工程實(shí)踐。本文很多地方是講解函數(shù)式編程的優(yōu)勢,就筆者個(gè)人而言是認(rèn)可函數(shù)式編程具有一定的好處,但是不推崇徹底的函數(shù)式編程化,特別是對于復(fù)雜應(yīng)用邏輯的開發(fā)。筆者在應(yīng)用的狀態(tài)管理工具中就更傾向于使用MobX而不是...
閱讀 2070·2021-11-23 09:51
閱讀 2214·2021-09-29 09:34
閱讀 3705·2021-09-22 15:50
閱讀 3565·2021-09-22 15:23
閱讀 2591·2019-08-30 15:55
閱讀 709·2019-08-30 15:53
閱讀 3080·2019-08-29 17:09
閱讀 2636·2019-08-29 13:57