定义

每个对象都有一个propertyIsEnumerable()方法。此方法返回一个布尔值,表明指定的属性是否是可枚举。

This method can determine whether the specified property in an object can be enumerated by a for...in loop, with the exception of properties inherited through the prototype chain. (来源MDN)

翻译:

此方法可以确定对象中的指定属性是否可以由for ... in循环枚举,但通过原型链继承的属性除外。

我理解的意思,不知道对不对:

此方法,可以确定对象中的指定属性(除了通过原型链继承的属性)是否可以由for...in循环枚举。

也就是说:

for...in循环出来的属性,除了通过原型链继承的属性不是可枚举,其他都是可枚举属性。

用法举例

使用方法obj.propertyIsEnumerable(prop)来判断是否可枚举。

  1. const obj = {};
  2. const arr = [];
  3. obj.name= 'weiqinl';
  4. arr[0] = 2018;
  5. console.log(obj.propertyIsEnumerable('name')); // true
  6. console.log(arr.propertyIsEnumerable(0)); // true
  7. console.log(arr.propertyIsEnumerable('length')); // false

找出对象的可枚举属性

  1. function Person(name,age) {
  2. this.name = name
  3. this.age = age
  4. this.say = function() {
  5. console.log('say hi')
  6. }
  7. }
  8. Person.prototype.where = 'beijing' // 在原型链上添加属性
  9. var p = new Person('weiqinl', 18) // 实例化一个对象
  10. p.time = '2018' // 在实例上添加属性
  11. let arr = []
  12. for(let i in p) {
  13. console.log(i, p.propertyIsEnumerable(i))
  14. p.propertyIsEnumerable(i)? arr.push(i) : ''
  15. }
  16. console.log(arr)
  17. // name true
  18. // age true
  19. // say true
  20. // time true
  21. // where false
  22. // (4) ["name", "age", "say", "time"]

浏览器的window对象的可枚举属性

window对象的可枚举属性到底有多少个呢?

  1. var arr = []
  2. for(let i in window) {
  3. if(window.propertyIsEnumerable(i)) {
  4. arr.push(i)
  5. }
  6. }
  7. console.log(arr.length)

这个长度,在每个网站的值都是不一样的,因为他们会各自往window上添加全局属性。我看到最少的可枚举属性值个数为195

与hasOwnProperty的区别

  1. hasOwnProperty()方法检验是否为自有属性
  2. propertyIsEnumberable()方法,可以确定对象中的指定属性(除了通过原型链继承的属性)是否可以由for...in循环枚举。

    [完]

js属性对象的propertyIsEnumerable方法的更多相关文章

  1. js属性对象的hasOwnProperty方法

    Object的hasOwnProperty()方法返回一个布尔值,判断对象是否包含特定的自身(非继承)属性. 判断自身属性是否存在 var o = new Object(); o.prop = 'ex ...

  2. js window对象属相和方法相关整理资料

    window对象有以下方法: open close alert confirm prompt setTimeout clearTimeout setInterval clearInterval mov ...

  3. js显示对象所有属性和方法的函数

    function ShowObjProperty2( obj ) { // 用来保存所有的属性名称和值 var attributes = '' ; var methods = '' // 开始遍历 f ...

  4. 161227、js显示对象所有属性和方法的函数

    要想看到实际效果,可以先声明一些属性跟方法,否则是看不到,仔细往下看有例子的. function ShowObjProperty(Obj) { var PropertyList=''; var Pro ...

  5. JS获取对象数据类型的方法

    1.typeof: 语法:typeof 对象 或者 typeof(对象) 返回对象的数据类型:只有原始数据类型:boolean number string undefined function obj ...

  6. JS中对象转数组方法总结

    1.Array.from() 方法,用于数组的浅拷贝.就是将一个类数组对象或者可遍历对象转换成一个真正的数组.eg: let obj = { 0: 'nihao', 1: 'haha', 2: 'ga ...

  7. js获取对象位置的方法

    scrollHeight: 获取对象的滚动高度. scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最 ...

  8. javascript对象事件绑定方法

    javascript对象事件绑定方法 今天在做对象事件绑定的过程中出现了一点异外情况,由于事件方法是由参数传过来的,需要将当前对象call过去,方便方法体里直接调用this 错误写法 obj.oncl ...

  9. archaius(4) 属性对象

    讲完上一节,我们就可以使用合理的配置管理器或者实现自己的配置管理来管理我们的配置项了.archaius还提供了一种新的配置使用的方式. 动态属性对象 动态属性对象针对每个配置项以对象方式进行操作,并且 ...

随机推荐

  1. kubernetes 1.14安装部署dashboard

    简单介绍: Dashboard是一个基于web的Kubernetes用户界面.您可以使用Dashboard将容器化应用程序部署到Kubernetes集群,对容器化应用程序进行故障诊断,并管理集群资源. ...

  2. 第四十五篇--将文件写入SD卡

    RAM: 运行内存 ROM: 外部存储,手机内部存储 SD卡:外部存储,SD卡存储. 在存储文件时千万不要忘记向清单文件中添加相应权限,并且android6.0以后还要添加运行时权限 还有一个权限有所 ...

  3. Java基础 -- 深入理解Java异常机制

    异常指不期而至的各种状况,如:文件找不到.网络连接失败.非法参数等.异常是一个事件,它发生在程序运行期间,干扰了正常的指令流程.Java通 过API中Throwable类的众多子类描述各种不同的异常. ...

  4. prometheus 集群

    思路一 统一区域的监控目标,prometheus server两台监控相同的目标群体. 改变后 上面这个变化对于监控目标端,会多出一倍的查询请求,但在一台prometheus server宕机的情况下 ...

  5. jenkins 自动化部署执行shell

    # -*- coding:utf-8 _*-""" @author:Administrator @file: new_app_publish.py @time: 2018 ...

  6. Visual Studio Shortcuts

    https://docs.google.com/file/d/0Bw8aEjCQGEquMjRaWFBKUUtuRE0/edit

  7. 手把手编写PHP MVC框架实例教程

    源地址:https://www.awaimai.com/128.html#comment-27466 这个不错,用php实现mvc最核心功能,代码量只有几十K. 其实,不管用那种方法,最终都是incl ...

  8. 一道Python面试题:给出d = [True, False, True, False, True],请利用列表d,只用一句话返回列表[0,2,4]

    看题:给出d = [True, False, True, False, True],请利用列表d,只用一句话返回列表[0,2,4] 这道题的关键是拿到True的索引值,最初我是用list的index方 ...

  9. centos 7.2 下 nginx 1.14.1 安装部署

    Nginx1.14.1安装部署 1.环境: 所有源码在跳板机kx的/web/soft下 2.安装依赖: [root@bogon src]# yum install -y libxml2 openssl ...

  10. textarea高度自适应(转载)

    原文地址:https://blog.csdn.net/itzhongzi/article/details/73949712