用迭代器 模拟一个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")
 // }
相关推荐
坐吃山猪25 分钟前
Python27_协程游戏理解
开发语言·python·游戏
gCode Teacher 格码致知26 分钟前
Javascript提高:小数精度和随机数-由Deepseek产生
开发语言·javascript·ecmascript
比特森林探险记1 小时前
【无标题】
java·前端
椰猫子1 小时前
Javaweb(Filter、Listener、AJAX、JSON)
java·开发语言
IT_陈寒1 小时前
SpringBoot自动配置把我都整不会了
前端·人工智能·后端
盛世宏博北京1 小时前
以太网温湿度传感器运维技巧,提升设备稳定性与使用寿命
开发语言·php·以太网温湿度传感器
代码改善世界2 小时前
【MATLAB初阶】矩阵操作(一)
开发语言·matlab·矩阵
覆东流2 小时前
第1天:Python环境搭建 & 第一个程序
开发语言·后端·python
最逗前端小白鼠2 小时前
vue3 数据响应式遇到的问题
前端·vue.js
朝阳5812 小时前
rust 交叉编译指南
开发语言·后端·rust