美文网首页
Symbol作为属性名的遍历

Symbol作为属性名的遍历

作者: 祈求者 | 来源:发表于2018-03-29 01:36 被阅读45次

Symbol作为属性名。该属性不会出现在for...in ,for...of 循环中,也不会被Object.keys() 和
Object.getOwnPropertyNames() 返回。但是它不是私有属性,有一个方法Object.getOwnPropertySymbols()可以获取指定对象的所有Symbol属性名。

Object.getOwnPropertySymbols()方法返回一个数组,数组每项是当前对象的所有用作属性名的Symbol值。

var obj = {};
var a = Symbol('a');
var b = Symbol('b');

obj[a] = 'kon';
obj[b] = 'chan';

var objectSymbols = Object.getOwnProperySymbols(obj);

objectSymbols
//[Symbol(a),Symbol(b)]

有一个新的API ------ Reflect.ownKeys方法可以返回所有类型的键名

let obj = {
  [Symbol('my_key')]:1,
  enum:2,
  nonEnum:3
};

Reflect.ownKeys(obj)
//[Symbol(my_key),'enum','nonEnum']

补充Object.keys() 和Object.getOwnPropertyNames()方法

*Object.keys()
Object.keys() 方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用for...in 循环遍历该对象时返回的顺序一致 (两者的主要区别是 一个 for-in 循环还会枚举其原型链上的属性)。
*Object.getOwnPropertyNames()
Object.getOwnPropertyNames() 返回一个数组,该数组对元素是 obj自身拥有的枚举或不可枚举属性名称字符串。 数组中枚举属性的顺序与通过 for...in 循环(或 Object.keys)迭代该对象属性时一致。数组中不可枚举属性的顺序未定义。

摘录自:https://developer.mozilla.org/zh-CN/docs/Web

相关文章

  • Symbol简单理解

    Symbol 概述 作为属性名的symbol 属性名的遍历 Symbol的方法 内置的symbol值 概述 Sym...

  • Symbol

    概述 作为属性名的 Symbol 实例:消除魔术字符串 属性名的遍历 Symbol.for(),Symbol.ke...

  • Symbol作为属性名的遍历

    Symbol作为属性名。该属性不会出现在for...in ,for...of 循环中,也不会被Object....

  • JS-学习ES6之-Symbol数据类型[整理稿]

    为什么要有Symbol Symbol可以传参数 Symbol 作为属性名的用法 Symbol.for() 1. 为...

  • Javascript中的遍历

    对象遍历 方法是否可遍历不可枚举属性是否可遍历Symbol属性是否可原型链属性Object.keys-------...

  • ES6 Symbol类型

    每个Symbol实例都是唯一的 应用场景: 使用Symbol来作为对象属性名(key) Symbol类型的key是...

  • ES6 入门摘录笔记(三)

    从symbol开始到最后的书的目录结构 第10章 Symbol 183 10.1 概述 18310.2 作为属性名...

  • ECMAScript6 基础知识点(下)

    01 Symbol Symbol 为独一无二的值,当 Symbol 值作为对象的属性名的时候,不能用点运算符获取对...

  • js 遍历对象方法

    【1】for in(获得可枚举的属性)(不含Symbol属性) 使用 for in 循环遍历对象的属性时,原型链上...

  • 我在JavaScript中用的较少的遍历

    JavaScript中对对象的遍历 1.for in遍历对象, 能够遍历出自身和继承的可枚举属性(Symbol除外...

网友评论

      本文标题:Symbol作为属性名的遍历

      本文链接:https://www.haomeiwen.com/subject/hjepcftx.html