ES6字符串的 Iterator 接口特性有哪些?

Posted 水香木鱼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES6字符串的 Iterator 接口特性有哪些?相关的知识,希望对你有一定的参考价值。


字符串是一个类似数组的对象,也原生具有 Iterator 接口。

var someString = "hi";
typeof someString[Symbol.iterator]
// "function"

var iterator = someString[Symbol.iterator]();

iterator.next()  //  value: "h", done: false 
iterator.next()  //  value: "i", done: false 
iterator.next()  //  value: undefined, done: true 

上面代码中,调用Symbol.iterator方法返回一个遍历器对象,在这个遍历器上可以调用 next 方法,实现对于字符串的遍历

可以覆盖原生的Symbol.iterator方法,达到修改遍历器行为的目的。

var str = new String("hi");

[...str] // ["h", "i"]

str[Symbol.iterator] = function() 
  return 
    next: function() 
      if (this._first) 
        this._first = false;
        return  value: "bye", done: false ;
       else 
        return  done: true ;
      
    ,
    _first: true
  ;
;

[...str] // ["bye"]
str // "hi"

上面代码中,字符串strSymbol.iterator方法被修改了,所以扩展运算符(...)返回的值变成了bye,而字符串本身还是hi。

以上是关于ES6字符串的 Iterator 接口特性有哪些?的主要内容,如果未能解决你的问题,请参考以下文章

ES6调用 Iterator 接口的场合有哪些?

ES6调用 Iterator 接口的场合有哪些?

ES6默认 Iterator 接口数据结构有哪些?

ES6新特性分享(完结)

es6新特性 for...of

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