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
    }
  • 相关阅读:
    记一份电网信息化建设企业信息分析平台规划
    2018年个人心灵历程记录
    OGG For Bigdata To Kafka同步问题处理
    Vue.js有赞商城(思路以及总结整理)
    汉诺塔-递归算法
    git合并分支
    js实现页面消息滚动效果
    chrome实现网页高清截屏(F12、shift+ctrl+p、capture)
    JS计算时间差
    Socket.io详解
  • 原文地址:https://www.cnblogs.com/zhishaofei/p/12926692.html
Copyright © 2011-2022 走看看