zoukankan      html  css  js  c++  java
  • 获取Object对象属性的方法,Reflect.ownKeys, Object.getOwnPropertyNames,Object.getOwnPropertySymbols,Object.keys,for in

    let triangle={
    a:1,
    b:2,
    c:3
    }
    function coloTriangle(){
    this.color='red';
    }
    coloTriangle.prototype=triangle;
    let color=new coloTriangle();
    Object.defineProperty(color,'auto',{
    value:'auto'
    })
    let symbolProp=Symbol('symbol');
    color[symbolProp]='symbol'
    /**
    Reflect.ownKeys:Object.getOwnPropertyNames(target).concat(Object.getOwnPropertySymbols)
    * 没有来自继承的,都是own
    * 不管枚举不枚举都能遍历
    * 还可以拿到symbol类型属性
    */
    Reflect.ownKeys(color) //["color","auto",Symbol(symbol)]
    /**
    Object.getOwnPropertyNames
    * 没有来自继承,都是own
    * 不管枚举不枚举都能遍历
    * 拿不到symbol类型属性
    */
    Object.getOwnPropertyNames(color);//["color","auto"]
    /**
    Object.getOwnPropertySymbols
    * 只能own
    * 也不管枚举不枚举
    * 只能拿到Symbol类型属性
    */
    Object.getOwnPropertySymbols(color);//[Symbol(symbol)]
    /**
    Object.keys就有点矫情了
    * 只能是own
    * and 要枚举才行
    * 拿不到Symbol类型属性
    *
    */
    Object.keys(color);//["color"]



    /**
    * for in 就是也是取其一把
    * 不需要own,可以来自继承属性
    * 但是一定会要枚举
    * 拿不到Symbol类型属性
    */
    for(let i in color){
    console.log(i);//color a b c
    }
  • 相关阅读:
    nginx article
    学习历程
    GRPC
    学习记录
    JAVA知识点记录
    flag
    读的文章
    This usually happens because your environment has changed since running `npm install`.
    expandedRowKeys、expandedRowsChange、expand
    服务端高并发分布式架构演进之路
  • 原文地址:https://www.cnblogs.com/zhishaofei/p/12926692.html
Copyright © 2011-2022 走看看