首页 > 代码库 > js之oop <三>属性标签
js之oop <三>属性标签
读取属性标签
获取对象属性标签,用 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的第三个参数的属性包括:value,writeable,enumerable,configurable。value必须赋值,writeable,enumerable,configurable默认都为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 <三>属性标签