zoukankan      html  css  js  c++  java
  • for...in 、Object.keys 、 Object.getOwnPropertyNames

    个人总结:

    1.for...in 遍历的是对象的可枚举,非Symbol属性(包括自身和原型上的)

    2.Object.keys 返回一个数组,是对象自身的可枚举属性 (非Symbol)

    3.Object.getOwnPropertyNames得到一个数组,是对象自身的可枚举和不可枚举属性 (除了Symbol)

    function People() {
    this.name = 'Tom' // enumerable
    this.age = 24 // enumrable
    this.c = function () { // enumrable
        console.log('1')
       }
    }

    People.prototype.look = function () { // enumrable
    console.log('look at this')
    }


    var b = new People()

    // 使用Object.defineProperty为b添加一个'sex'的不可枚举属性
    Object.defineProperty(b, 'sex', {
    value: '女',
    // enumerable:false 在Object.defineProperty中,enumerable默认是false的
    })


    /**
    * name,age,c是对象的普通属性(默认可枚举)
    * look在对象的原型上(默认可枚举)
    * sex不可枚举
    */


    //一、 for in遍历对象的可枚举属性
    for (var i in b) {
    console.log(i)
    }

    console.log('==================')

    //二、 Object.keys 得到一个数组,内容是自身的可枚举属性 不能包括原型上的可枚举属性
    console.log(Object.keys(b))

    console.log('==================')

    //三、 Object.getOwnPropertyNames 得到一个数组,内容是自身的所有属性(包括可枚举 不可枚举) (不包括原型的内容)
    console.log(Object.getOwnPropertyNames(b))
     
     
    运行结果:
     

     

  • 相关阅读:
    Cocos Creator之生命周期函数
    Cocos Creator之基本概念
    Cocos Creator之菜单栏和工具栏
    Cocos Creator之认识
    lvs nat模式+iptables实现fullnat
    k8s cpu绑定
    arp代理
    确定veth pair在容器和宿主机的对应关系
    k8s 滚动发布
    http长连接
  • 原文地址:https://www.cnblogs.com/eret9616/p/11209776.html
Copyright © 2011-2022 走看看