javascriptの改竄防止対象のprevent Extensions()方法

3393 ワード

jsはデフォルトでは、すべてのオブジェクトは拡張可能です.これも多くの開発者が頭を痛めている問題です.同じ環境の中で、不注意で不必要なオブジェクトを修正してしまうので、自分では分かりません.
ECMAScript 5でこの問題を解決できます.
prevent Extensions():この方法で処理した対象は元のオブジェクトの削除に影響しません.修正します.しかし、新しい属性のメンバーは追加できません.
例1:
1 var person={name:"guo"};//      
2 person.age=23;//    
3 alert(person.age);//======>23
例2:
1 var person={name:"guo"}; 
2 Object.preventExtensions(person);//      ,        .
3 person.age=23;
4 alert(person.age);//======>undefined
5             
例3: 
1 "use strict";//    
2 var person={name:"guo"}; 
3 Object.preventExtensions(person);//      ,        
4  /*
5          ,            ,      ,    
6   */
7 person.age=23;
 例四: 
1 var person={name:"guo"}; 
2 /*
3 isExtensible();         
4   true:    
5   false:   
6 */
7 alert(Object.isExtensible(person));//====>true.
8 Object.preventExtensions(person);//      ,        
9  alert(Object.isExtensible(person));//=====>false