Es6 Symbol.iterator

Symbol.iterator 为每一个对象定义了默认的迭代器。该迭代器可以被 for...of 循环结构使用。

--描述

当需要迭代一个对象的时候(比如在 for...of 循环的开始时),它的 @@iterator 方法就会被调用一次(0 个参数),同时返回的迭代器将被用来获取被迭代出来的值。

一些内建类型拥有默认的迭代器行为,其他类型(如 Object )则没有。下表中的内建类型拥有默认的@@iterator方法:

--例如数组

var arr = ["javascript","c#","php","node"];
for(var value of arr){
    console.log(value);
}

或者以另外一种形式读取

var newarr = arr[Symbol.iterator]();
newarr.next();
newarr.next();
newarr.next();
newarr.next();
newarr.next();

--作用

  1. for-of 简单的外表下隐藏着强大的功能:如下
  2. 这是最简洁、最直接的遍历数组元素的语法
  3. 这个方法避开了for-in循环的所有缺陷
  4. 与forEach()不同的是,它可以正确的响应break、continue和return语句
  5. for-in循环用来遍历对象属性
  6. for-of循环用来遍历数据-例如数组中的值

另外值得一提的是,生成器也是按照迭代器的原理进行封装的,也就是说生成器就是迭代器!

--

时间: 2024-11-06 10:12:37

Es6 Symbol.iterator的相关文章

ES6的Iterator,jquery Fn

ES6的Iterator对象详解 Iterator实现原理 创建一个指针对象,指向当前数据结构的起始位置.也就是说,遍历器对象本质上,就是一个指针对象. 第一次调用指针对象的next方法,可以将指针指向数据结构的第一个成员. 第二次调用指针对象的next方法,指针就指向数据结构的第二个成员. 不断调用指针对象的next方法,直到它指向数据结构的结束位置. 每一次调用next方法,都会返回数据结构的当前成员的信息.具体来说,就是返回一个包含value和done两个属性的对象.其中,value属性是

使对象具有ES6中Iterator接口的实现方法

es6中只有具有iterator接口的数组或者类数组(arguments)都可以使用for of来循环,但是对于对象来说不行,可以利用迭代器中的原理来给对象生成一个迭代器,实现让对象可以使用for of 1 var j={ 2 name:'小红', 3 age:18 4 } 5 //给j对象添加一个iterator接口 6 j[Symbol.iterator]=function(){ 7 //使用object.keys()方法把j对象中的k值读取出来存在数组当中 8 var arr=Object

symbol,iterator,generator

1.symbol是在ES6中引入的一种基本数据类型,因为symbol是不重复.唯一的数据特性,symbol设计是被用来表示对象内部的私有属性的. symbol.for与symbol.keyfor: let a = Symbol.for(‘123’) let b= Symbol.for(‘123’) a == b // true (在全局用这个key来registry) Symbol.for是这样工作的, 先搜索全局用这个key注册的Symbol,如果没有,用key在全局注册一个Symbol Sy

ECMA Script 6_symbol(symbol.iterator) 新接口_iterator接口

iterator 接口 只要部署了 iterator 接口 symbol(symbol.iterator), 则可以进行 for...of  遍历 原文地址:https://www.cnblogs.com/tianxiaxuange/p/10122924.html

ES6 Symbol类型 附带:Proxy和Set

七种数据类型 ·Symbol ·undefined ·null ·Boolean ·String ·Number ·Object let a = Symbol('this is a symbol'); let b = Symbol(); console.log(a === b); //false Symbol的用途:在{ }作用域内可以临时重写一个变量 // //file1.js let name = Symbol(); { var person = { }; person[name] = 'F

ES6——Symbol数据类型

什么是 Symbol ? Symbol 表示独一无二的值,他是js中的 第七种数据类型. 基本的数据类型:null, undefined number boolean string symbol 引用数据类型:Object let s1=Symbol(); let s2= Symbol(); console.log(typeof s1); //symbol console.log(s1===s2) //false; Symbol 函数不能使用 new 否则会把错,因为 Symbol 是一个原始类

ES6中的Iterator和for...of

先说说数组遍历的几种方法吧: 1,for循环: 缺点:写法麻烦2,内置forEach方法; 缺点:不能跳出循环;break和return都不能;3,for...in;    缺点:数组的键名是数字,但是for...in循环是以字符串作为键名"0"."1"."2"等等.for...in循环不仅遍历数字键名,还会遍历手动添加的其他键,甚至包括原型链上的键.某些情况下,for...in循环会以任意顺序遍历键名.总之,for...in循环主要是为遍历对象

ES6的新特性(14)——Iterator 和 for...of 循环

Iterator 和 for...of 循环 Iterator(遍历器)的概念 JavaScript 原有的表示"集合"的数据结构,主要是数组(Array)和对象(Object),ES6 又添加了Map和Set.这样就有了四种数据集合,用户还可以组合使用它们,定义自己的数据结构,比如数组的成员是Map,Map的成员是对象.这样就需要一种统一的接口机制,来处理所有不同的数据结构. 遍历器(Iterator)就是这样一种机制.它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结

Iterator 和 for...of 循环

Iterator(遍历器)的概念 JavaScript 原有的表示“集合”的数据结构,主要是数组(Array)和对象(Object),ES6 又添加了Map和Set.这样就有了四种数据集合,用户还可以组合使用它们,定义自己的数据结构,比如数组的成员是Map,Map的成员是对象.这样就需要一种统一的接口机制,来处理所有不同的数据结构. 遍历器(Iterator)就是这样一种机制.它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只要部署 Iterator 接口,就可以完成遍历操作(