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