js属性对象的propertyIsEnumerable方法
定义
每个对象都有一个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)
来判断是否可枚举。
const obj = {};
const arr = [];
obj.name= 'weiqinl';
arr[0] = 2018;
console.log(obj.propertyIsEnumerable('name')); // true
console.log(arr.propertyIsEnumerable(0)); // true
console.log(arr.propertyIsEnumerable('length')); // false
找出对象的可枚举属性
function Person(name,age) {
this.name = name
this.age = age
this.say = function() {
console.log('say hi')
}
}
Person.prototype.where = 'beijing' // 在原型链上添加属性
var p = new Person('weiqinl', 18) // 实例化一个对象
p.time = '2018' // 在实例上添加属性
let arr = []
for(let i in p) {
console.log(i, p.propertyIsEnumerable(i))
p.propertyIsEnumerable(i)? arr.push(i) : ''
}
console.log(arr)
// name true
// age true
// say true
// time true
// where false
// (4) ["name", "age", "say", "time"]
浏览器的window对象的可枚举属性
window对象的可枚举属性到底有多少个呢?
var arr = []
for(let i in window) {
if(window.propertyIsEnumerable(i)) {
arr.push(i)
}
}
console.log(arr.length)
这个长度,在每个网站的值都是不一样的,因为他们会各自往window上添加全局属性。我看到最少的可枚举属性值个数为195
与hasOwnProperty的区别
hasOwnProperty()
方法检验是否为自有属性。propertyIsEnumberable()
方法,可以确定对象中的指定属性(除了通过原型链继承的属性)是否可以由for...in
循环枚举。
[完]
js属性对象的propertyIsEnumerable方法的更多相关文章
- js属性对象的hasOwnProperty方法
Object的hasOwnProperty()方法返回一个布尔值,判断对象是否包含特定的自身(非继承)属性. 判断自身属性是否存在 var o = new Object(); o.prop = 'ex ...
- js window对象属相和方法相关整理资料
window对象有以下方法: open close alert confirm prompt setTimeout clearTimeout setInterval clearInterval mov ...
- js显示对象所有属性和方法的函数
function ShowObjProperty2( obj ) { // 用来保存所有的属性名称和值 var attributes = '' ; var methods = '' // 开始遍历 f ...
- 161227、js显示对象所有属性和方法的函数
要想看到实际效果,可以先声明一些属性跟方法,否则是看不到,仔细往下看有例子的. function ShowObjProperty(Obj) { var PropertyList=''; var Pro ...
- JS获取对象数据类型的方法
1.typeof: 语法:typeof 对象 或者 typeof(对象) 返回对象的数据类型:只有原始数据类型:boolean number string undefined function obj ...
- JS中对象转数组方法总结
1.Array.from() 方法,用于数组的浅拷贝.就是将一个类数组对象或者可遍历对象转换成一个真正的数组.eg: let obj = { 0: 'nihao', 1: 'haha', 2: 'ga ...
- js获取对象位置的方法
scrollHeight: 获取对象的滚动高度. scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离 scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最 ...
- javascript对象事件绑定方法
javascript对象事件绑定方法 今天在做对象事件绑定的过程中出现了一点异外情况,由于事件方法是由参数传过来的,需要将当前对象call过去,方便方法体里直接调用this 错误写法 obj.oncl ...
- archaius(4) 属性对象
讲完上一节,我们就可以使用合理的配置管理器或者实现自己的配置管理来管理我们的配置项了.archaius还提供了一种新的配置使用的方式. 动态属性对象 动态属性对象针对每个配置项以对象方式进行操作,并且 ...
随机推荐
- nginx 配置详解(转)
nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...
- CentOS 7 网卡配置对比
1.DHCP模式(原始) [root@centos7-minimal /]# vim /etc/sysconfig/network-scripts/ifcfg-eno16777736 TYPE=&qu ...
- CF1129B 【Wrong Answer】
既然 $ n \leq 2000$ 那我们就假使所有的 $n = 2000 $ 主要是为了方便.再使 \(x = \sum_{i=1} ^ {1999}\) 以及 $a_1=a_2=a_3=...=a ...
- 分库分表后跨分片查询与Elastic Search
携程酒店订单Elastic Search实战:http://www.lvesu.com/blog/main/cms-610.html 为什么分库分表后不建议跨分片查询:https://www.jian ...
- 自制stm32板子无法烧录程序的问题
自己画的stm32板子一开始出现了无法烧录程序的情况,主要表现为在点击load图标后出现了Stlink connect error!Target dll has been concelled的窗口.在 ...
- Ireport5.0.1 从java后台接收list集合
作为ireport新手,开始使用时总有很多问题,说一下今天解决的一个问题,就是怎样从java后台接收list集合并显示出列表. 1.首先要在主dataset中的Paramerters 中创建参数lis ...
- Kindle复活记
此前,2015年为了配合拆机堂的内容项目,我们将全新Kindle PaperWhite 3进行全球首拆,让网友们第一时间全面了解了Kindle PaperWhite 3的内部构造.但由于进行深度拆解, ...
- C#中Dictionary的介绍
关键字:C# Dictionary 字典 作者:txw1958原文:http://www.cnblogs.com/txw1958/archive/2012/11/07/csharp-dictionar ...
- cocos2d-x入门学习笔记——Hello world分析
Hello world分析 1. “resource”文件夹 用于存放图片.音频和配置等资源文件.为了方便管理,可以创建在其中创建子文件夹.Cocos2d-x为我们屏蔽了不同平台对于文件路径的定义. ...
- BLSTM的训练算法、解码算法以及模型的改进
摘要 BLSTM解码时,解码器需要等待整个音频到达后才开始解码,因为时间反方向的前向传播需要末尾的历史信息.BLSTM这一延时问题使其不适用与实时语音识别.context-sensitive-chun ...