对象的遍历

对象的遍历

有时候最简单最基础的东西,恰巧是最需要看的东西,从今天开始,开始每天回顾一些东西

先看对象的创建
    let obj = {};
    let createObj = Object.create({});
    let createNull = Object.create(null);

据我了解可以这样创建对象,但是三种创建方式得出结果不同,前两种是拥有prototype(原型)的,可以寻找源头,第三种打印可知,是一个没有任何携带的空对象,no properties,无指针无原型

对象的判空

这个倒是经常使用的,对象为空的判断,数据使用要做兼容防止报错,此处延伸一个try{}catch(){}的问题,在代码中用此方法来防止代码报错显然是愚蠢的,在代码中过多try{}catch(){}会造成程序的压力,影响不是很大但是一处处的不严谨就是造成代码质量过低的原因

//第一种判空方法
    let obj = {};
    let result = true;
    for (let key in obj) {
      result = false;
    }
//第二种判空方法
    let obj = {};
    Object.keys(obj).length === 0

//第三种判空方法
    let obj = {};
    JSON.stringify(obj) === '{}'
对象的遍历

for...in

    for(let key in B){
      console.log(key, B[key]);
    }

Object.keys()

    let keys = Object.keys(B);

Object.getOwnPropertyNames()

与Object.keys功能一致,但Object.getOwnPropertyNames也可以传递数组,旨在返回由指定对象的所有自身属性的属性名(包括不可枚举属性但不包括Symbol值作为名称的属性)

    let ownNames = Object.getOwnPropertyNames(B);

Object.getOwnPropertySymbols()
Reflect.ownKeys()

后两种不是十分常见,返回一个数组,包含给定对象所有自有的Symbol值的属性(包括不可枚举的Symbol值属性)
Object.keys()返回属性key,但不包括不可枚举的属性Reflect.ownKeys()返回所有属性key

说到这里想起了forEach,还有一个es6新增的for…fo

forEach

对数组的每一个元素执行一次提供的函数(不能使用return、break等中断循环),不改变原数组

for...fo

ES6中新增加的语法,用来循环获取一对键值对中的值,一个数据结构只有部署了 Symbol.iterator 属性, 具有 iterator接口可以使用 for of循环,obj对象没有Symbol.iterator属性 会报错
Symbol.iterator属性的对象有Array Map Set String arguments对象 dom列表

对象的遍历没什么花哨的东西,但是也是可以回顾一下的,比如es6新增的for...fo,如果不是回头看真的是没用过,Object.getOwnPropertySymbols() Reflect.ownKeys()也都只是了解,但是存在即合理,肯定自有其好处

  • 5
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值