不可擴充套件物件 object.preventextensions
不可新增新屬性
let obj =
object.
preventextensions
(obj)
obj.c =
1 obj //
// object.i***tensible檢測是否可擴充套件
console.
log(object.
i***tensible
(obj));
// false
密封物件 object.seal
密封物件不可擴充套件,而且已有的屬性成員[[configurable]]特性將被設定成false(意味著不能刪除屬性和方法,但是可修改已有屬性值)
let obj =
;// 密封
object.
seal
(obj)
;// 刪除
delete obj.a // false
// 可以刪引用型別的屬性
delete obj.b[1]
// true.
obj.b //
obj.b[1]
// undefined
obj.a =
'c'
obj.a // c
// 檢視描述, 可以看到configurable為false
object.
getownpropertydescriptors
(obj)
//a:
//b:
凍結物件 object.freeze
最嚴格的防止篡改級別是凍結物件,凍結的物件既不可以擴充套件,又是密封的,而且物件資料屬性的[[writable]]特性會被設定為false。 如果定義[[set]]函式,訪問器屬性仍然是可寫的
let obj =
object.
freeze
(obj)
;// 不可修改
obj.a =
'c' obj.a // 'a'
// 不可刪除
delete obj.a // false
// 不可新增
obj.c =
1// 檢視描述, 可以看到configurable為false, writable也為 false
object.
getownpropertydescriptors
(obj)
// a:
// b:
不可擴充套件物件
預設情況下,所有物件都是可以擴充套件的。也就是說,任何時候都可以向物件中新增屬性和方法。例如,可以像下面這樣先定義乙個物件,後來再給它新增乙個屬性。var person person.age 29 即使第一行 已經完整定義 person 物件,但第二行 仍然能給它新增屬性。現在,使用 object....
WPF優化 Freezable凍結物件
wpf 雖然很美觀,效果很炫,但是對資源的消耗也很大,尤其是初次接觸wpf 的人,因為很多地方雖然實現了想要的效果,但是由於經驗問題,所以也會造成很大的資源浪費,好的程式,需要更好的優化 雖然可能只是節省了很少的一點資源,但是對整體程式執行的速度與穩定性來說,也許就起到了決定性的作用 每個地方都能做...
js防篡改物件之凍結物件
const person object.defineproperty person,job set function newvalue console.log object.isfrozen person false 使用object.freeze 將物件修改為凍結物件,凍結物件即無法擴充套件,又是...