码迷,mamicode.com
首页 > Web开发 > 详细

js之oop <三>属性标签

时间:2016-09-10 23:57:50      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:

读取属性标签

获取对象属性标签,用 Object.getOwnPropertyDescriptor方法。
getOwnPropertyDescriptor(); 参数属性所在对象(object),属性名(string)

var obj = { code:2,element:"ele" };
Object.getOwnPropertyDescriptor(obj,"code");
//输出 { value: 2, writable: true, enumerable: true, configurable: true }

getOwnPropertyDescriptor返回该属性标签的对象。
value      属性值
writeable    属性是否可写(是否可修改)
enumerable    属性是否可枚举(是否在for in遍历中出现)
configurable   属性的其他属性标签是否可修改或者该属性是否可delete
一般方式添加这四个属性标签默认都是true

****************************************************************************************************************

定义属性标签

定义对象属性标签,用 Object.defineProperty()方法。
defineProperty(); 参数目标对象(object),属性名(string),属性标签(object json(对象字面量)格式创建)

这里defineProperty的第三个参数的属性包括:valuewriteableenumerableconfigurable。value必须赋值,writeableenumerableconfigurable默认都为false。

var obj = {};
Object.defineProperty(obj,"o_name",{
    value:"obj_name",
    writeable:false,
    enumerable:false,
    configurable:false
});
obj.o_name = "New_name";    //输出 obj_name
//writeable为false,所以无法修改该属性值。
delete obj.o_name;          //返回 false
//configurable为false,所以无法被delete。
Object.keys(obj)            //返回空集合
//enumerable为false,所以无法遍历

批量定义属性标签

定义对象属性标签,用 Object.defineProperties()方法。
defineProperties(); 参数目标对象(object),批量属性标签(object json(对象子面量)格式创建)

function o(){};
var o1 = new o();
Object.defineProperties(o1,{a:{value:1,enumerable:true},
                            b:{value:2,writable:true},
                            c:{value:3,configurable:true,writable:true}});
Object.getOwnPropertyDescriptor(o1,"a");
//返回 { value: 1,writable: false,enumerable: true,configurable: false }
Object.getOwnPropertyDescriptor(o1,"b");
//返回 { value: 2,writable: true,enumerable: false,configurable: false }
Object.getOwnPropertyDescriptor(o1,"c");
//返回 { value: 2,writable: true,enumerable: false,configurable: true }

****************************************************************************************************************

遍历对象属性

遍历对象属性除了用for in还可以用 Object.keys()方法。
keys(); 参数遍历对象(object)。
keys()返回对象属性的数组。

var obj = { a:1,b:2,c:3,d:4 };
obj.e = 5;
Object.keys(obj);
//返回 [ ‘a‘, ‘b‘, ‘c‘, ‘d‘, ‘e‘ ]
Object.defineProperty(obj,"e",{value:15,enumerable:false});
Object.keys(obj);
//返回 [ ‘a‘, ‘b‘, ‘c‘, ‘d‘ ]
obj.e;  //输出 15

 

js之oop <三>属性标签

标签:

原文地址:http://www.cnblogs.com/MirageFox/p/5860565.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!