js手動配置迭代器接口

對象內添加:

//給Object添加迭代器
Object.prototype[Symbol.iterator] = function () {
  let keys = Object.keys(this)
  let that = this, index = 0
  return {
    next() {
      if (index < keys.length) return { value: that[keys[index++]], done: false }
      else return { value: undefined, done: true }
    }
  }
}

類裏面添加:

//手動配置迭代器接口
class Stack{
  constructor() {
    this.count = 0	//長度
    this.items = {}	//迭代的對象
  }
  [Symbol.iterator]() {
  	let self = this
  	let index = 0
  	return {
    	next() {
      		if (index < self.count) return { value: self.items[index++], done: false }
      		else return { value: undefined, done: true }
    	}
  	}
  }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章