一般来说,默认情况下,对象都是可拓展的,我们可以为其属性进行增删改等操作,也可以更改他们原型的指向,如何让一个对象变得不可拓展呢,我们可以使用ES5提供的几个方法,来保证锁定的对象是不可拓展的
Object.preventExtensions
Object.preventExtensions可以锁定对象,设置对象的不可拓展,可以阻止为对象添加新的属性,非严格模式下会默默不起作用,但是严格模式下会报错,可以用Object.isExtensible判断对象是否可拓展
1 | var person = { |
Object.seal
Object.seal和上面的Object.preventExtensions方法作用是一样,字面意思是密封,也是用来防止对象被拓展,另外还可以阻止对象已有属性和方法的删除,可以用Object.isSealed判断对象是否可拓展
1 | var person = { |
Object.freeze
作用与上述两个方法大致相同,字面意思是冰冻,还可以阻止对象的属性和方法被修改,可以用Object.isFrozen判断对象是否可拓展
1 | var person = { |
总的来说,上述三个操作方法preventExtensions,seal,freeze可以设置对象的不可拓展性,并且每个方法都针对对象的不可拓展有着不同的限制,另外还有三个判断方法,isExtensible,isSealed,isFrozen来对对象进行操作,返回Boolean值,来判断对象是否可拓展