Object.prototype.propertyIsEnumerable

语法:

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。

时间: 2024-10-11 11:31:30

Object.prototype.propertyIsEnumerable的相关文章

JavaScript的数据类型都有什么? JavaScript中 toStirng() 与 Object.prototype.toString().call()

JavaScript的数据类型都有什么? (via  BAT互联网公司2014前端笔试面试题:JavaScript篇  http://www.sxt.cn/u/756/blog/4508) 基本数据类型:String,boolean,Number,Undefined, Null 引用数据类型: Object(Array,Date,RegExp,Function) 疑问:这些基本的数据类型的值都是常量,而常量是没有方法的,为什么能够调用方法呢?答案是这样的,五种基本类型除了null.undefin

Object.prototype和Function.prototype一些常用方法

Object.prototype 方法: hasOwnProperty 概念:用来判断一个对象中的某一个属性是否是自己提供的(主要是判断属性是原型继承还是自己提供的) 语法:对象.hasOwnProperty('属性名') var o = { name: 'jim' }; function Person() { this.age = 19; this.address='北京'; this.work='上海'; } Person.prototype = o; var p = new Person(

Object.prototype 与 Function.prototype 与 instanceof 运算符

方法: hasOwnProperty isPrototypeOf propertyIsEnumerable hasOwnProperty 该方法用来判断一个对象中的某一个属性是否是自己提供的( 住要用在判断属性是原型继承的还是自己提供的 ) 语法: 对象.hasOwnProperty( '属性名' ) -> boolean isPrototypeOf 凡是看到 of 翻译成 的, 反过来翻译: prototype of obj, 翻译成 obj 的 原型 因此该方法的含义是: xxx 是 xxx

Object.prototype的成员介绍

3.Object.prototype的成员介绍 Object.prototype是js中所有的对象的祖宗 Object.prototype中所有的成员都可以被js中所有的对象使用! 3.1. 方法: hasOwnProperty 语法: 对象.hasOwnProperty("属性名") 功能: 判断当前对象自身是否拥有指定的属性! // var obj = { //     name: "胡聪聪" // }; // console.log("toStrin

Object.prototype不要直接使用,代码规范

1.不要直接调用 Object.prototype 的方法,比如 hasOwnProperty, propertyIsEnumerable, 和 isPrototypeOf. // bad console.log(object.hasOwnProperty(key)); // good console.log(Object.prototype.hasOwnProperty.call(object, key)); // best const has = Object.prototype.hasOw

利用Object.prototype.toString.call(obj)判断数据类型

1.typeof判断数据类型 typeof可以用来判断基本数据类型,对于Array.Error.RegExp.Number.Function只能判断为object 2.使用Object.prototype.toString.call(obj)判断数据类型 var a=new Number(12); var toString=Object.prototype.toString; console.log(toString.call(a));//[object Number] console.log(

js中通过Object.prototype.toString方法----精确判断对象的类型

判断是否为函数 function isFunction(it) {        return Object.prototype.toString.call(it) === '[object Function]';    } 判断是否为数组: function isArray(o) {   return Object.prototype.toString.call(o) === '[object Array]';  } 由于 JavaScript 中一切都是对象,任何都不例外,对所有值类型应用

Object.prototype.toString()

概述 toString() 方法返回一个代表该对象的字符串. 语法 object.toString() 描述 当对象需要转换为字符串时,会调用它的toString()方法..默认情况下,每个对象都会从Object上继承到toString()方法,如果这个方法没有被这个对象自身或者更接近的上层原型上的同名方法覆盖(遮蔽),则调用该对象的toString()方法时会返回"[object type]",这里的字符串type表示了一个对象类型.下面的代码演示了这一点: var o = new

JavaScript中Object.prototype.toString方法的原理

在JavaScript中,想要判断某个对象值属于哪种内置类型,最靠谱的做法就是通过Object.prototype.toString方法. ? 1 2 var arr = []; console.log(Object.prototype.toString.call(arr)) //"[object Array]" 本文要讲的就是,toString方法是如何做到这一点的,原理是什么. ECMAScript 3 在ES3中,Object.prototype.toString方法的规范如下: