Symbol.iterator 迷惑行为】的更多相关文章

Iterator实现原理 创建一个指针对象,指向当前数据结构的起始位置.也就是说,遍历器对象本质上,就是一个指针对象. 第一次调用指针对象的next方法,可以将指针指向数据结构的第一个成员. 第二次调用指针对象的next方法,指针就指向数据结构的第二个成员. 不断调用指针对象的next方法,直到它指向数据结构的结束位置. 每一次调用next方法,都会返回数据结构的当前成员的信息.具体来说,就是返回一个包含value和done两个属性的对象.其中,value属性是当前成员的值,done属性是一个布…
Symbol.iterator 为每一个对象定义了默认的迭代器.该迭代器可以被 for...of 循环结构使用. --描述 当需要迭代一个对象的时候(比如在 for...of 循环的开始时),它的 @@iterator 方法就会被调用一次(0 个参数),同时返回的迭代器将被用来获取被迭代出来的值. 一些内建类型拥有默认的迭代器行为,其他类型(如 Object )则没有.下表中的内建类型拥有默认的@@iterator方法: Array.prototype[@@iterator]() TypedAr…
iterator 接口 只要部署了 iterator 接口 symbol(symbol.iterator), 则可以进行 for...of  遍历…
Symbol.iterator 和 for of 是es6的新特性 可以为对象设置 自己的迭代器 首先介绍我们的for of var arr = [1,2,3,8,33] for (var i of arr){ console.log(i) } 1 2 3 8 33 1 2 3 4 5 6 7 8 9 就是这么简单 这里呢其实访问了 arr的迭代器调用next的方法的返回值中的value属性 (不知道我在说什么?继续往下看) 然后就是 Symbol.iterator var arr = [4,5…
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在全局注册一个Sym…
1.可以部署在对象上的一个遍历器 2. 遍历器是一个函数,需要返回一个含有一个next 方法的对象 const likeArray = {0:'a', 1: 'b', 2: 'c',3: 'd'. length: 4}; likeArray[Symbol.iterator] = function(){ // 提供一个遍历器接口 let i = 0; return { next: () => { return {value: this[i], done: i++ === this.length}…
https://blog.csdn.net/margin_0px/article/details/82971545…
模板字符串 作用:简化字符串的拼接 模板字符串必须用``包含 变化的部分使用${xxx}包含 对象的简写方式 同名的属性可以省略不写 可以省略函数的function 箭头函数 箭头函数的特点 箭头函数没有自己的this,箭头函数的this不是调用的时候决定的,而是在定义的时候处在的对象就是它的this 扩展理解: 箭头函数的this看外层的是否有函数 如果有,外层函数的this就是内部箭头函数的this 如果没有,则this是window 形参的情况 没有形参的时候 let fun1 = ()…
一.Iterator (遍历器)的概念: 遍历器(Iterator)就是这样一种机制.它是一种接口,为各种不同的数据结构提供统一的访问机制.任何数据结构只 要部署Iterator接口,就可以完成遍历操作(即依次处理该数据结构的所有成员). Iterator的作用有三个: 一是为各种数据结构,提供一个统一的.简便的访问接口: 二是使得数据结构的成员能够按某种次序排列: 三是ES6创造了一种新的遍历命令for...of循环,Iterator接口主要供for...of消费. 1.在ES6中,有三类数据…
Iterator和for...of循环 首先 Iterator 是一个接口. 标准是 function makeIterator(array) { var nextIndex = 0; return { next: function() { return nextIndex < array.length ? {value: array[nextIndex++], done: false} : {value: undefined, done: true}; } }; } 每次调用 next 返回两…