ECMAScript 5中的属性描述符详解(2)


var obj = { };
obj.attr = 1;
Object.seal(obj);
obj.attr = 1.5;
delete obj.attr; // fail


Object.freeze 可以使对象完全无法被修改:

复制代码 代码如下:


var obj = { };
obj.attr = 1;
Object.freeze(obj);
obj.attr = 1.5; // fail
obj.attr2 = 2; //fail


然后大家可能又会问,怎么知道某个对象是否曾经被preventExtensions、seal或者freeze呢?答案就是分别调用 Object.isExtensible 、 Object.isSealed 、 Object.isFrozen ,这三个函数的用法比较简单,就不再累赘了。

总的来说,通过属性描述符可以进一步严格控制对象,加强程序逻辑的严谨性,唯一不足的就是,ES5在IE9里面才基本实现(IE9还不支持严格模式),考虑到国内IE8份额还比较高的情况,这套东西目前只能在移动端浏览器和Node.js里面用了。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wgfdwj.html