ck168

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

1、ES中的对象是完全动态的,这意味着,在程序执行的时候我们可以任意的添加,修改或删除对象的属性。

        var stu = { ID: 1 };

        //添加新属性
        stu.Name = 'ck';

        console.log(stu);  //{ID:1,Name:ck}
        alert(stu.ID+stu.Name);

有些属性不能被修改——(只读属性、已删除属性或不可配置的属性)。

2、ES5规范规定,静态对象不能扩展新的属性,并且它的属性页不能删除或者修改。他们是所谓的冻结对象,可以通过应用Object.freeze(o)方法得到。

        var stu = { ID: 1 };

        //冻结对象
        Object.freeze(stu);
        console.log(Object.isFrozen(stu));  //true

        //不能修改
        stu.ID = 3;
        //不能扩展
        stu.Name = 'ck';
        //不能删除
        delete stu.ID;

3、在ES5规范里,也使用Object.preventExtensions(o)方法防止扩展,或者使用Object.defineProperty(o)方法来定义属性:

        var stu = { ID: 1 };
        Object.defineProperty(stu, "Name", {
            value: "ck",
            writable: false,  //只读
            configurable: false  //不可配置
        });

        //不能修改
        stu.Name = 'jxl';
        alert(stu.Name);   // ck

        //不能删除
        delete stu.Name;   //false

        //防治扩展
        Object.preventExtensions(stu);
        console.log(Object.isExtensible(stu));   // false
        //不能添加新属性
        stu.Age = 28;

        console.log(stu);  //{ID:1,Name='ck'}

 

posted on 2016-05-16 15:33  HelloWorld168  阅读(182)  评论(0)    收藏  举报