不可擴充套件物件

2021-08-20 04:58:17 字數 814 閱讀 3762

預設情況下,所有物件都是可以擴充套件的。也就是說,任何時候都可以向物件中新增屬性和方法。例如,可以像下面這樣先定義乙個物件,後來再給它新增乙個屬性。

var person = ;

person.age = 29;

即使第一行**已經完整定義 person 物件,但第二行**仍然能給它新增屬性。現在,使用 object.preventextensions() 方法可以改變這個行為,讓你不能再給物件新增屬性和方法。 例如:

var person = ;

object.preventextensions(person);

person.age = 29;

alert(person.age); //undefined

在呼叫了 object.preventextensions() 方法後,就不能給 person 物件新增新屬性和方法了。在非嚴格模式下,給物件新增新成員會導致失敗,因此 person.age 將是 undefined 。而在嚴格模式下,嘗試給不可擴充套件的物件新增新成員會導致丟擲錯誤。

雖然不能給物件新增新成員,但已有的成員則絲毫不受影響。你仍然還可以修改和刪除已有的成員。另外,使用 object.istextensible() 方法還可以確定物件是否可以擴充套件。

var person = ;

alert(object.i***tensible(person)); //true

object.preventextensions(person);

alert(object.i***tensible(person)); //false

想法丨發現丨習慣丨人文

讓閱讀成為習慣,讓靈魂擁有溫度

不可擴充套件物件 密封物件 凍結物件

不可擴充套件物件 object.preventextensions 不可新增新屬性 let obj object.preventextensions obj obj.c 1 obj object.i tensible檢測是否可擴充套件 console.log object.i tensible ob...

js防篡改物件之不可擴充套件物件

const person console.log object.i tensible person true 使用object.preventextensions 可以將物件修改為不可擴充套件物件,無法再給物件新增屬性和方法 object.preventextensions person 使用obj...

可變物件,不可變物件

不可變物件為字串,元組等 可變物件為列表,字典,集合等。淺拷貝只是對已經存在的記憶體新增加乙個物件引用。深拷貝就是重新申請乙個新的記憶體,使這個是新物件是新記憶體位址的引用。對於可變物件引用時時經常出現。考慮以下兩段 1 l for i in range 10 num i print l 結果 2 ...