JavaScript对象 属性

时间:2021-12-27 23:01:59

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'}