兩個都凍結和海豹用於在 JavaScript 中創建不可擴展對象,但它們之間有很多差異。
- Object.seal()允許更改對象的現有屬性。它可以防止刪除現有屬性,但無法防止外部更改。
- Object freeze()不允許這樣。它使一個對象免受一切影響,即使是無法做出微小的改變。
用法:
Object.seal(objectname);
Object.freeze(objectname);
示例 1:這個例子說明了如何對象.seal()用於創建不可擴展的對象,但這並不能阻止對象的值被更改,並且可以看到該值已更新為 20。
javascript
// creates an object
let obj = {
// assigns 10 to value
value: 10
};
// creates a non-extensible object
Object.seal(obj);
// the value gets updated to 20
obj.value = 20;
console.log(obj.value);
輸出:
20
示例 2:這個例子說明了如何對象.freeze()用於創建不可擴展的對象,但防止更改對象的現有值,並給出 10 作為輸出。
javascript
let obj = {
// assigns 10 to value
value: 10
};
// creates a non-extensible object
Object.freeze(obj);
// updates the value
obj.value = 20;
// but cannot change the existing value
console.log(obj.value);
輸出:
10
讓我們以表格形式看看差異:
凍結 |
海豹 |
---|---|
它用於防止對象添加新屬性 | 它用於使對象的屬性不可配置。 |
還可以使用它來避免修改當前存在的屬性 | 它還用於防止添加新屬性 |
它將參數作為對象 | 它將參數作為對象 |
它的返回類型是對象類型。 | 它的返回類型是e-sealed對象類型。 |
相關用法
- Javascript fetch()用法及代碼示例
- Javascript find()和filter()的區別用法及代碼示例
- Javascript Atomics.add( )用法及代碼示例
- Javascript Atomics.and()用法及代碼示例
- Javascript Atomics.compareExchange( )用法及代碼示例
- Javascript Atomics.exchange( )用法及代碼示例
- Javascript Atomics.isLockFree( )用法及代碼示例
- Javascript Atomics.load( )用法及代碼示例
- Javascript Atomics.or( )用法及代碼示例
- Javascript Atomics.store( )用法及代碼示例
- Javascript Atomics.sub( )用法及代碼示例
- Javascript Atomics.xor()用法及代碼示例
- Javascript Date.UTC( )用法及代碼示例
- Javascript array.flatMap()用法及代碼示例
- Javascript Array.of()用法及代碼示例
- Javascript array.includes()用法及代碼示例
- Javascript Array.isArray()用法及代碼示例
- Javascript array.keys()用法及代碼示例
- Javascript array.reduceRight()用法及代碼示例
- Javascript array.toLocaleString()用法及代碼示例
- Javascript array.values()用法及代碼示例
- Javascript arrayBuffer.byteLength用法及代碼示例
- Javascript ArrayBuffer.isView()用法及代碼示例
- Javascript boolean.toString()用法及代碼示例
- Javascript boolean.valueOf()用法及代碼示例
注:本文由純淨天空篩選整理自ankit0812大神的英文原創作品 What is the difference between freeze and seal in JavaScript ?。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。