用迭代器 模拟一个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")
 // }
相关推荐
Y1rong14 小时前
C++ QT之记事本
开发语言·qt
谎言西西里17 小时前
JS 高手必会:手写 new 与 instanceof
javascript
雪碧聊技术18 小时前
前端项目代码发生改变,如何重新部署到linux服务器?
前端·vue3·centos7·代码更新,重新部署
diegoXie18 小时前
Python / R 向量顺序分割与跨步分割
开发语言·python·r语言
程序员小白条18 小时前
0经验如何找实习?
java·开发语言·数据结构·数据库·链表
liulilittle18 小时前
C++ 浮点数封装。
linux·服务器·开发语言·前端·网络·数据库·c++
wordbaby18 小时前
Expo 进阶指南:赋予 TanStack Query “原生感知力” —— 深度解析 AppState 与 NetInfo
前端·react native
Moment18 小时前
从美团全栈化看 AI 冲击:前端转全栈,是自救还是必然 🤔🤔🤔
前端·后端·面试
天问一19 小时前
使用 Vue Router 进行路由定制和调用的示例
前端·javascript·vue.js
失散1319 小时前
Python——1 概述
开发语言·python