用迭代器 模拟一个for of

javascript 复制代码
 function forOf(arr, cb) {
    //const fun = arr.entries
     const fun = arr[Symbol.iterator]
    if (arr != null && typeof fun !== 'function') {
       throw TypeError("arr is not a iterable")
    }
    let iterator = arr[Symbol.iterator]();
    let obj = iterator.next();
    while (!obj.done) {
      cb(obj.value)
      obj = iterator.next()
    }
  }
javascript 复制代码
 // 测试
  const obj = { k: 1 }
  const obj2 = { k: 2 }
  const wp = new WeakMap([[obj, 1], [obj2, 2]]) //x
  const ws = new WeakSet([[obj, 1], [obj2, 2]])//x
  const map = new Map([[obj, 1], [obj2, 2]])//√
  const set = new Set([[obj, 1], [obj2, 2]])//√
  const arr = Array.from(ws) //√ []

  let ddo = wp
  forOf(ddo, function (val) {
    console.log(val, 'my forOf')
  })
 // for (let i of ddo) {
 //   console.log(i, "for of")
 // }
相关推荐
平凡但不平庸的码农18 小时前
Go context 包详解
开发语言·后端·golang
隐士Xbox18 小时前
c++ 指针的用法
开发语言·c++·计算机视觉
江南十四行18 小时前
Python元类编程——从type到metaclass的深度探索
开发语言·python
众乐乐_200818 小时前
PHP 的进程 fork 机制
开发语言·php
ZC跨境爬虫18 小时前
跟着 MDN 学 HTML day_32:(AbstractRange 抽象接口与 DOM 范围操作)
前端·javascript·ui·html·音视频
yujunl18 小时前
U9 WCF调试的一个坑
开发语言
lly20240618 小时前
Scala 模式匹配
开发语言
十子木18 小时前
设置把所有终端移动到最前端的快捷键
前端
2zcode18 小时前
基于MATLAB卷积神经网络的多颜色车牌识别系统设计与实现
开发语言·matlab·cnn
陈老老老板18 小时前
Bright Data Web Scraping 实战:用 MCP + Dify 构建 eBay 商品详情采集 AI 工作流(2026)
前端·人工智能