昨天在写文章(转载)的时候发现了有些对象的方法是分可枚举性和不可枚举性的。
简单的查了一下资料,今天来捋一捋啥是对象的可枚举啥是不可枚举。
JS中对象转数组方法总结

可枚举性:

对象的每一个属性都有一个描述对象,用来描述和控制该属性的行为,用Object.getOwnPropertyDescriptor方法来获取该描述对象(用Object.defineProperty方法来设置)。
    然后这个Object.defineProperty的方法不是vue双向数据绑定的原理吗!!下次再说…
    描述对象的enumerable属性,称为”可枚举性“,如果该属性为false,就表示某些操作会忽略当前属性。

   let obj = { start: '123' };console.log(Object.getOwnPropertyDescriptor(obj, 'start'))// 输出内容:configurable: trueenumerable: truevalue: "123"writable: true

下面,我们分别介绍下对象属性的描述对象的4个属性:
1.configurable:表示能否通过delete删除此属性,能否修改属性的特性,或能否修改把属性修改为访问器属性,如果直接使用字面量定义对象,默认值为true

2.enumerable: 表示该属性是否可枚举,即是否通过for-in循环或Object.keys()返回属性,如果直接使用字面量定义对象,默认值为true

3.writable: 能否修改属性的值,如果直接使用字面量定义对象,默认值为true
4.value: 该属性对应的值,默认为undefined

经过以上的一些操作,我还是不是很真切的理解可枚举性。那就举一个例子

 let obj = {};Object.defineProperties(obj, {name: {value: '祖宗',enumerable: false,  //不可枚举},age: {value: 88,enumerable: true,   //可枚举}})for (let key in obj) {console.log("key:" + key + ',' + 'value:' + obj[key])}


只有可枚举的内容被for in 循环出来了
有没有感觉清晰了很多!!
(在这里感谢大佬提点!)

这就是个属性,如果false遍历就拿不到了,true遍历就能拿到了…(研究完了发现超简单诶。尴尬)

目前,有四个操作会忽略enumerable为false的属性。
for…in循环:只遍历对象自身的和继承的可枚举的属性。
Object.keys():返回对象自身的所有可枚举的属性的键名。
JSON.stringify():只串行化对象自身的可枚举的属性。
Object.assign(): 忽略enumerable为false的属性,只拷贝对象自身的可枚举的属性。

然后明儿写原生js实现vue中的双向数据绑定~~

JS对象的可枚举属性和不可枚举属性相关推荐

  1. js对象转数组可枚举属性和不可枚举属性

    前言 项目里面很多地方我们需要把数据处理一下才能应用,包括我们拿到的是一个对象,但是我们需要遍历,这个时候就需要把对象转成数组来实现我们的目的了,js对象转数组有几种方法,归纳整理一下- js对象转数 ...

  2. JavaScript对象中的可枚举属性和不可枚举属性

    在JavaScript中,对象的属性有可枚举和不可枚举之分,它是由对象属性描述符enumerable决定的.如果该属性是可枚举性的那么这个属性就能被for-in查找遍历到. 对象的属性描述符 在Jav ...

  3. js的可枚举属性与不可枚举属性

    可枚举属性和不可枚举属性什么意思? 在javascript中,对象的属性可以分为可枚举属性和不可枚举属性,它们的属性由enumerable值决定,可枚举属性决定了这个属性能否被for in 遍历到 判 ...

  4. 可枚举属性和不可枚举属性(for...in循环和Objec.keys()和Object.getOwnPropertyNames())

    可枚举属性和不可枚举属性(for...in循环和Objec.keys()和Object.getOwnPropertyNames()) for...in循环是 遍历对象的每一个可枚举属性,包括原型链上面 ...

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

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

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

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

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

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

  8. JavaScript 对象属性 的可枚举属性与不可枚举属性(enumerable:true/false)

    原文章:https://www.cnblogs.com/kongxy/p/4618173.html 在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决 ...

  9. JavaScript中的可枚举属性与不可枚举属性

    在JavaScript中,对象的属性分为可枚举和不可枚举之分,它们是由属性的enumerable值决定的.可枚举性决定了这个属性能否被for-in查找遍历到. 一.怎么判断属性是否可枚举 js中基本包 ...

最新文章

  1. 病人还能生存多久?现在AI能给出更精准的预测
  2. Spark之数据倾斜 --采样分而治之解决方案
  3. 抽象工厂模式 objective-c 版
  4. kali2020提高权限到root
  5. word无法打开请去应用商店_word文档打不开的4种解决方法
  6. Redis -- Hash(哈希) [3]
  7. 剑指offer python实现_剑指offer系列python实现 日更(三)
  8. python 打印类型_让Python输出更漂亮:PrettyPrinter
  9. 【Servlet】web.xml中url-pattern的用法
  10. 设置共享打印机连接提示0x000000bcb错误问题的修复办法
  11. 2019 “钱”途光明的 8 大前端开发技术,你还差几个?
  12. 如何发送gmail邮件_如何从R和Gmail发送电子邮件
  13. 常用、免费的API接口网址
  14. 搜索已配对蓝牙 java,java-查找和配对蓝牙设备
  15. SISO/MIMO信道估计(channel estimation)原理详细图解
  16. 看得见的数据结构Android版之表的数组实现(视图篇)
  17. JS 特性:可选链(?.)
  18. 辗转相除法的时间复杂度
  19. oftPerfect RAM Disk 内存盘管理,提高软件速度
  20. 网闸——(好)物理隔离网闸——入门篇

热门文章

  1. 用计算机专业术语写寄语,霸气辅导员用编程写毕业寄语 毕业生直呼有创意
  2. SpringMVC之@InitBinder注解详解
  3. win10 kali虚拟机连不上网的问题
  4. 西北工业大学计算机操作系统实验_西北工业大学语音关键词检出技术上线腾讯信息服务...
  5. 前后端分离项目,前端cookie获取不到的解决方案
  6. Linux 制作 yum 源
  7. 【C递归和迭代】兔子繁殖问题、青蛙跳台阶问题和汉诺塔问题
  8. 微信小程序开发之从“跳伞”到“吃鸡”
  9. ios开发笔记如何在iphone-and-ipad应用程序添加admob
  10. eBay是不是一定要养号?是的