Object.seal
Version >= 五
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; // undefined
obj.bar(); // 'foo'
// Can't make foo an accessor property
Object.defineProperty(obj, 'foo', {
get: function () { return 'newFoo'; }
}); // TypeError
// But you can make it read only
Object.defineProperty(obj, 'foo', {
writable: false
}); // TypeError
obj.foo = 'newFoo';
obj.foo; // 'foo';
在嚴格的模式下,這些操作將會產生一些影響
(function () {
'use strict';
var obj = { foo: 'foo' };
Object.seal(obj);
obj.newFoo = 'newFoo'; // TypeError
}());