• js对象中什么是可枚举性(enumerable)?


    引言

    说到枚举,可能很多人都会想到枚举类型,但在javascript对象中有一个属性为可枚举性,他是什么呢?

    概念

    可枚举性(enumerable)用来控制所描述的属性,是否将被包括在for…in循环之中。
    具体来说,如果一个属性的enumerable为false,下面三个操作不会取到该属性:

    for…in循环
    Object.keys方法
    JSON.stringify方法

    enumerable “隐身术”

    var o = {a:1, b:2};

    o.c = 3;

    Object.defineProperty(o, 'd', { value: 4, enumerable: false });

    o.d // 4

    for( var key in o ) console.log( o[key] ); // 1 // 2 // 3

    Object.keys(o) // ["a", "b", "c"]

    JSON.stringify(o) // => "{a:1,b:2,c:3}"

    上面代码中,d属性的 enumerable 为 false ,所以一般的遍历操作都无法获取该属性,使得它有点像“秘密”属性,但还是可以直接获取它的值。

    至于 for...in 循环和 Object.keys 方法的区别,在于前者包括对象继承自 原型对象的 属性,而后者只包括对象 本身的 属性。

    如果需要获取对象自身的所有属性,不管enumerable的值,可以使用 Object.getOwnPropertyNames 方法

  • 相关阅读:
    转载【工具】目前几种常见的线上接口文档管理平台的比较
    最好的Julia语言
    称霸Kaggle的十大深度学习技巧
    AI以假乱真怎么办?TequilaGAN教你轻松辨真伪
    2018 CISCN reverse
    2018 CISCN Writeup
    加壳&脱壳
    脱upx壳--初试--单步追踪
    Linux
    hackme.inndy.tw
  • 原文地址:https://www.cnblogs.com/douglasvegas/p/5430671.html
Copyright © 2020-2023  润新知