1. 程式人生 > 程式設計 >JavaScript 防篡改物件的用法示例

JavaScript 防篡改物件的用法示例

javascript防篡改物件

這個東西吧,用到的很少,個人感覺用處不大,但是,可以作為裝逼的利器,哈哈,開搞。。

1、不可擴充套件物件

預設情況下物件都是可以擴充套件的,也就是說,任何時候都可以向物件中新增屬性和方法。現在使用Object.preventExtensions(object)方法可以改變這個行為,讓你不能再給物件新增屬http://www.cppcns.com性和方法。例如:

var person={name : 'jack'};
Object.prevehttp://www.cppcns.comntExtensions(person);
person.age=13;
console.log(person.age);///undefine

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

var person={name : 'jack'};
alert(Object.isExtensible(person));//true

Object.preventExtensions(person);
alert(Object.istExtensible(person));//false

2、密封的物件

ECMAScript 5 為物件定義的第二個保護級別是密封物件。使用Object程式設計客棧.seal(object)方法可以將物件改為密封物件。密封物件不可擴充套件,而且已有成員的[[configurable]IxaEswJrI

]特性將被設定為false。這就意味著不能刪除屬性和方法,因為不能使用Object.defineProperty()把資料修改為訪問其屬性,或者相反。但是屬性值是可以修改的。

var person = {name:'tom'};
Object.seal(person);
person.age=12;
console.log(person.age);//undefine

delete person.name;
console.log(person.name);//tom

person.name="jack";
alert(person.name);//jack

使用Object.isSealed()方法可以確定物件是否被密封了,因為被密封的物件也是不可擴充套件的,所以使用Object.istExtensible()檢測密封物件也會返回false(即不可擴充套件)

var person = {name:'tom'};
alert(Object.isExtensible(person));///true,可擴充套件
alert(Object.isSealed(person));////false,未加密
   程式設計客棧            
Object.seal(person);
alert(Object.isExtensible(person));///false,不可擴充套件
alert(Object.isSealed(person));////true,已經加密

3、凍結的物件

最嚴格的的防止篡改級別的是凍結物件,凍結的物件既不可擴充套件,又是密封的,而且物件的資料屬性的[[Writable]]特性會被設定為false,如果定義set函式,訪問器屬性仍然是可寫的,現在使用Object.freeze(object)方法可以將物件改為凍結的物件。

var person={name : 'tony'};
Object.freeze(person);
person.age=12;
alert(person.age);//undefine

delete person.name;
alert(person.name);//tony

person.name = 'jack';
alert(person.name);//tony

使用Object.isFrozen()方法可以檢測物件是否是凍結物件,因為凍結物件既是不可擴充套件物件,又是密封的物件,所以用isExtensible()
和Object.istExtensible()檢測凍結物件將分別返回false和true,

var person = {name:'tom'};
alert(Object.isExtensible(person));///true,未加密
alert(Object.isFrozen(person));////false,未加密
               
Object.seal(person);
alert(Object.isExtensible(person));///false,已經加密
alert(Object.isFrozen(person));////true,已經凍結

以上就是javaScript 防篡改物件的用法示例的詳細內容,更多關於JavaScript 防篡改物件的資料請關注我們其它相關文章!