當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Javascript freeze和seal的區別用法及代碼示例


兩個都凍結海豹用於在 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對象類型。


相關用法


注:本文由純淨天空篩選整理自ankit0812大神的英文原創作品 What is the difference between freeze and seal in JavaScript ?。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。