枚举是什么???

枚举是指对象中的属性是否可以遍历出来,再简单点说就是属性是否可以以列举出来。

在js中基本的数据类型是不能被枚举的。例如Object、Array等。

枚举方法的区别

1.for…in循环可以枚举(遍历)出对象本身具有的属性,通过Object.defineProperty()方法加的可枚举属性,或者通过原型对象绑定的可以枚举属性。

function enumer() {this.a = '我是对象本身就有的属性';
}
enumer.prototype.b = '我是通过原型对象挂载的属性';
let fn = new enumer();
Object.defineProperty(fn, 'c', {value: '我是通过Object.defineProperty方法添加的可枚举属性',enumerable: true  // 是否可以枚举
});
for(let item in fn) {console.log(item);
}
/*输出*/
// a
// b
// c

2.Object.keys()方法可以枚举对象本身的属性和通过Object.defineProperty()添加的可枚举属性

function enumer() {this.a = '我是对象本身就有的属性';
}
enumer.prototype.b = '我是通过原型对象挂载的属性';
let fn = new enumer();
Object.defineProperty(fn, 'c', {value: '我是通过Object.defineProperty方法添加的可枚举属性',enumerable: true
});
console.log(Object.keys(fn));
/*输出*/
// ["a", "c"]

3.JSON.stringify()方法只能序列化本身的属性和通过Object.defineProperty()添加的可枚举属性为JSON对象

function enumer() {this.a = '我是对象本身就有的属性';
}
enumer.prototype.b = '我是通过原型对象挂载的属性';
let fn = new enumer();
Object.defineProperty(fn, 'c', {value: '我是通过Object.defineProperty方法添加的可枚举属性',enumerable: true
});
console.log(JSON.stringify(fn));
// {"a":"我是对象本身就有的属性","c":"我是通过Object.defineProperty方法添加的可枚举属性"}

-

js中的枚举和不可枚举相关推荐

  1. js中的枚举类型和不可枚举类型

    枚举:是指对象中的属性可以遍历出来,再简单点就是属性可以列举出来. 可枚举性决定了这个属性能否被for-in查找遍历到. js中基本包装类型的原型属性是不可枚举的,如Object, Array, Nu ...

  2. JS中可枚举属性(enumerable)和propertyIsEnumerable()

    什么是可枚举属性 枚举就是列举,可枚举属性就是可以列举的属性,直白一点就是可以用for in遍历到的属性. propertyIsEnumerable()的用法 obj.propertyIsEnumer ...

  3. JS中的可枚举属性与不可枚举属性的学习以及扩展

    最近在学习对象遍历的方法时总是能看到的两个词,一个是"原型",一个是"枚举属性".一开始感觉自己大概明白"枚举属性"的意思,但是叫我解释却又 ...

  4. Reflect.ownKeys()与Object.keys()区别 以及 JS中的可枚举属性与不可枚举属性

    代码test1: var obj = {} Object.defineProperty(obj, 'method1', {value: function () {alert("Non enu ...

  5. JS中的可枚举属性与不可枚举属性

    一.怎么判断属性是否可枚举 js中基本包装类型的原型属性是不可枚举的,如Object, Array, Number等,如果你写出这样的代码遍历其中的属性: var num = new Number() ...

  6. js 中的可枚举属性

    前言 首先,可枚举属性是指那些内部 "可枚举" 标志设置为 true 的属性,而这个"可枚举"标志,即enumerable. 对于通过直接的赋值和属性初始化的属 ...

  7. js 枚举 和 不可枚举

    枚举是什么? 枚举是指对象中的属性是否可以遍历出来,再简单点说就是属性是否可以以列举出来,不可枚举顾名思义. 注:在js中基本的数据类型是不能被枚举的. 1.for...in 循环可枚举(遍历)出对象 ...

  8. vue中引用js_从JS中的内存管理说起 —— JS中的弱引用

    点击上方"蓝字"关注本公众号 写在前面 在所有的编程语言中,我们声明一个变量时,需要系统为我们分配一块内存.当我们不再需要这个变量时,需要将内存进行回收(这个过程称之为垃圾回收). ...

  9. 详解JS中的原型与继承

    每当我们提起原型链时不免会想到原型对象,对象的原型,还有众多的继承方式.于是prototype.[[prototype]].constructor等等难免在头脑中打架. 然而原型其实并不是什么高大上的 ...

最新文章

  1. 对话功率谱与自相关函数
  2. Oracle RAC安装过程中所使用的一些配置
  3. LOJ #2542 [PKUWC2018]随机游走 (概率期望、组合数学、子集和变换、Min-Max容斥)
  4. Canvas设置样式无效导致圆变成椭圆的问题研究剖析
  5. 男生学计算机哪专业好,男生学计算机科学与技术专业好不好有前途吗
  6. java中的 31 和左移右移的关系简述
  7. 什么是气泡图?怎样用Python绘制?怎么用?终于有人讲明白了
  8. RN position定位及Android兼容处理
  9. 软件概要设计_软件测试模型之 V模型
  10. linux端口扫描脚本ip段,shell脚本结合iptables防端口扫描的实现
  11. (ORBSLAM3关联文章)论文翻译Inertial-Only Optimization for Visual-Inertial Initialization视觉惯性初始化的仅惯性优化
  12. 用什么软件测试路由器,软件测试路由器系统的方法及其运用
  13. 高清图片、视频素材免费下载
  14. UK EU 码对照表,USA EURO SIZE码对照表,国外衣服码对照表
  15. 13.SpringBoot学习(十三)——JDBC之 Spring Boot Jpa多数据源
  16. 湖北省最新测绘资质审批拟批准结果已公示,看看有没有你们公司
  17. 三国大时代java_横跨,塞班、安卓、pc的国产良心作《三国大时代》系列
  18. 借记来帐,借记往账,贷记来帐,贷记往账
  19. 小码农也有大梦想,技术详细介绍
  20. 从普通 Msconfig 启动选择转为选择性启动

热门文章

  1. java如何创建一个dao类_java – 如何设计一个DAO类?
  2. 可以实现微信小程序父子组件实时通信的插件
  3. Js读取Cookie中指定字段的值,Js中读取某个Cookie,Js中根据Cookie的key得到对应的value,Js正则表达式匹配指定的Cookie
  4. 解压命令linux tgz,linux常用压缩解压命令:tar,tgz,gzip,zip,rar
  5. 百度云不用再70K下载了
  6. 论 小米平板2 充电自动开机 问题的解决方法
  7. CC2530基础实验:(12)看门狗
  8. Java 解决 Unsupported major.minor version 52.0
  9. Android启动页,引导页适配华为手机(虚拟按键)显示问题
  10. 单源最短路径问题-迪杰斯特拉算法(Dijsktra)