zoukankan      html  css  js  c++  java
  • enumerable 可枚举 属性

    一个对象的可枚举属性会在for...in中被访问到 (或是类似的迭代方法, Object.keys()

    如果一个属性不是可枚举的,循环会忽略这个属性

    var obj = { key: 'val' };
    
    console.log('toString' in obj); // true
    console.log(typeof obj.toString); // "function"
    
    for (var key in obj)
        console.log(key); // "key"

    可枚举属性很重要,因为对象有很多属性,尤其是继承来的:

    console.log(Object.getOwnPropertyNames(Object.prototype));
    // ["constructor", "toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", /* etc. */]

    这些属性都存在于object上:

    console.log('constructor' in foo); // true
    console.log('toString' in foo);    // true
    // etc.

    但是他们会在for...in中被跳过 因为他们不是可枚举的

    var descriptor = Object.getOwnPropertyDescriptor(Object.prototype, 'constructor');
    
    console.log(descriptor.enumerable); // false

     
  • 相关阅读:
    (转载)Linux进程基础
    C语言字符串
    DNS域名解析服务
    Linux-SSH远程管理
    Linux文件系统深入了解
    Linux进程和计划任务管理
    Linux账户与权限管理
    MySQL实现读写分离
    SQL数据库常用函数
    MySQL进阶查询(二)
  • 原文地址:https://www.cnblogs.com/eret9616/p/11759588.html
Copyright © 2011-2022 走看看