歡迎您光臨本站 註冊首頁

原生JavaScript創建不可變對象的方法簡單示例

←手機掃碼閱讀     lousu-xi @ 2020-05-07 , reply:0

本文實例講述了原生JavaScript創建不可變對象的方法。分享給大家供大家參考,具體如下:
Javascript是一種靈活的語言,你可以重新定義任何東西,但是當項目變得複雜時,我們會發現可變數據結構的問題。隨著JavaScript的最新版本的發佈這種情況發生了改變。現在可以創建不可變的對象了。本文介紹如何用三種不同的方法來做。
對象的不變性意味著我們不希望對象在創建後即以任何方式更改(將它們設置為只讀類型)。
假設我們需要定義一個 car 對象,並在整個項目中使用它的屬性來執行操作。我們不能允許錯誤地修改任何數據。
const myTesla = { maxSpeed: 155, batteryLife: 300, weight: 2300 };
Object.preventExtensions() 防止擴展
此方法可防止向現有對象添加新屬性, preventExtensions() 是不可逆的操作,我們永遠不能再向對象添加額外的屬性。
Object.isExtensible(myTesla); // true Object.preventExtensions(myTesla); Object.isExtensible(myTesla); // false myTesla.color = 'blue'; console.log(myTesla.color) // undefined
Object.seal() 密封
它可以防止添加或刪除屬性, seal() 還可以防止修改屬性描述符。
Object.isSealed(myTesla); // false Object.seal(myTesla); Object.isSealed(myTesla); // true myTesla.color = 'blue'; console.log(myTesla.color); // undefined delete myTesla.batteryLife; // false console.log(myTesla.batteryLife); // 300 Object.defineProperty(myTesla, 'batteryLife'); // TypeError: Cannot redefine property: batteryLife
Object.freeze() 凍結
它的作用與 Object.seal() 相同,而且它使屬性不可寫。
Object.isFrozen(myTesla); // false Object.freeze(myTesla); Object.isFrozen(myTesla); // true myTesla.color = 'blue'; console.log(myTesla.color); // undefined delete myTesla.batteryLife; console.log(myTesla.batteryLife); // 300 Object.defineProperty(myTesla, 'batteryLife'); // TypeError: Cannot redefine property: batteryLife myTesla.batteryLife = 400; console.log(myTesla.batteryLife); // 300
提示
如果希望在嘗試修改不可變對象時拋出錯誤,請使用嚴格模式。


[lousu-xi ] 原生JavaScript創建不可變對象的方法簡單示例已經有297次圍觀

http://coctec.com/docs/javascript/show-post-233212.html