您的位置:首页 > 其它

犀牛——第6章对象 6.5 枚举属性

2015-07-24 16:17 330 查看
6.5 枚举属性

for/in循环可以在循环体中遍历对象中所有可枚举的属性(包括自由属性和继承属性),把属性名称赋值给循环变量。对象继承的内置方法不可枚举的,但在代码中给对象添加的属性都是可枚举的。

var o = {x:1,y:2,z:3}; //三个可枚举的自有属性

o.propertyIsEnumerale("toString"); //=>false,不可枚举

for(p in o) //遍历属性

console.log(p); //输出x、y和z,不会输出toString

过滤for/in循环返回的属性:

for(p in o){

if(!o.hasOwnProperty(p)) continue; //跳过继承的属性

}

for(p in o){

if(typeof o[p] === "function") continue; //

}

两个用以枚举属性名称的函数。

1、Object.keys(),它返回一个数组,这个数组由对象中可枚举的自有属性的名称组成。

2、Object.getOwnPropertyNames(),返回对象的所有自有属性的名称,而不仅仅是可枚举的属性。

6.6 属性getter和setter

对象属性是有名字、值和一组特性构成的。属性值可以用一个或两个方法替代,这两个方法就是getter和setter。由getter和setter定义的属性称做“存取器属性”。

定义存取器属性最简单的方法是使用对象直接量语法的一种扩展写法:

var o = {

//普通的数据属性

data_prop:value,

//存取器属性都是成对定义的函数

get accessor_prop(){ /*函数体*/},

set accessor_prop(value) {/*这里是函数体*/}

};

例子:

var p = {

//x和y是普通的可读写的数据属性

x:1.0,

y:1.0,

//

get r(){ return },

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: