码迷,mamicode.com
首页 > 编程语言 > 详细

Object.prototype.propertyIsEnumerable

时间:2015-05-02 20:36:49      阅读:128      评论:0      收藏:0      [点我收藏+]

标签:

语法:

obj.propertyIsEnumerable(prop);

此方法返回一个布尔值,表明指定的属性名是否是当前对象可枚举的自身属性。

1.如果是用户自定义了对象的属性,将返回true,比如

var o = {};

o.prop = ‘我是个可枚举属性‘;
o.fn = function(){};

//用户自定义属性
console.log(o.propertyIsEnumerable(‘prop‘));//true
console.log(o.propertyIsEnumerable(‘fn‘));//true

用for in遍历一下o对象,结果为:

for(var property in o){
    console.log(property);
}
//prop fn

2.如果是引擎内置对象属性和继承属性

var ob = {};
console.log(ob.propertyIsEnumerable(‘keys‘));//false  keys-->来自Object构造函数
console.log(ob.propertyIsEnumerable(‘constructor‘));//false  constructor-->来自Object原型对象属性

用for in遍历一下ob对象,结果为空.

3.如果是自定义类型的情况

function Dog(name){
    this.name = name;
}
Dog.prototype.sayName = function(){
    var some = this.name;
}
var dog = new Dog(‘huang‘);
console.log(dog.propertyIsEnumerable(‘name‘)); //true ‘name‘-->来自Dog类型的构造函数
console.log(dog.propertyIsEnumerable(‘sayName‘));//false ‘sayName‘-->继承自Dog类型

用for in 遍历一下dog对象,结果为:

for(var property in dog){
    console.log(property);
}//name sayName

sayName能遍历出来,但是他不是dog自身的属性。

4.如果是动态增加Object方法

var obj = {};
Object.prototype.Color = ‘green‘;
console.log(obj.propertyIsEnumerable(‘Color‘));//false 

 用for in遍历一下obj对象,结果为空。

综上所述:如果属性不是自身属性,而是继承属性,返回false;如果此自身属性不可枚举,也就是说此属性为引擎内置属性,也返回false;其余返回true。

Object.prototype.propertyIsEnumerable

标签:

原文地址:http://www.cnblogs.com/wang-jiang/p/4472408.html

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