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

     
  • 相关阅读:
    11月21日
    11月20日
    11月19日
    11月18日
    11月17日
    11月15日
    图文教程:在Mac上搭建Titanium的iOS开发环境
    经验
    IT术语的正确读法
    NSLog( @"%@", i );
  • 原文地址:https://www.cnblogs.com/eret9616/p/11759588.html
Copyright © 2011-2022 走看看