JavaScript 物体密封
示例
Object.seal防止添加或删除对象的属性。一旦对象被密封,其属性描述符就不能转换为另一种类型。Object.freeze与之不同的是,它允许编辑属性。
尝试在密封的对象上执行此操作的操作将失败,并且将失败
var obj = { foo: 'foo', bar: function () { return 'bar'; } };
Object.seal(obj)
obj.newFoo = 'newFoo';
obj.bar = function () { return 'foo' };
obj.newFoo; //未定义
obj.bar(); //'foo'
//无法将foo用作访问器属性
Object.defineProperty(obj, 'foo', {
get: function () { return 'newFoo'; }
}); //TypeError
//但您可以将其设为只读
Object.defineProperty(obj, 'foo', {
writable: false
}); //TypeError
obj.foo = 'newFoo';
obj.foo; //'foo';在严格模式下,这些操作将引发TypeError
(function () {
'use strict';
var obj = { foo: 'foo' };
Object.seal(obj);
obj.newFoo= 'newFoo'; //TypeError
}());