当前位置: 首页 > news >正文

【react】react18的学习(十二)– 底层原理(二)之 迭代器 iterator

迭代器iterator

是一种 ES6 规范,具有这种机制的数据结构才可以使用for of循环:返回每一项的值;
原型链具有Symbol.iterator属性的数据结构都具备;如数组、部分类数组、字符串等;
普通对象就不能用;

for-of循环原理:循环获取属性值;

  • 执行可迭代原型链上的Symbol.iterator方法,该方法返回一个包含next方法的对象;
  • 通过循环执行next方法,得到方法返回的对象,根据对象中值抛出返回值;
let obj = {name: 'aa',age: 10,
}Object.prototype[Symbol.iterator] = function iterator() {let self = this,index = -1,keys = Reflect.ownKeys(self)console.log(keys) //  ['name', 'age']return {next() {index++if (index > keys.length - 1) {return {done: true,value: undefined,}}return {done: false,value: self[keys[index]],}},}
}
for (const iterator of obj) {console.log(iterator) // aa 10
}
http://www.lryc.cn/news/96048.html

相关文章:

  • 一遍过JavaSE基础知识
  • 【云原生】Kubernetes之ConfigMap
  • 8.python设计模式【组合模式】
  • tkinter制作任意图形窗口
  • 视频监控综合管理平台EasyCVR多分屏默认播放协议的配置优化
  • 2023杭电多校第三场 1012.Noblesse Code
  • ubuntu qt 环境变量配置
  • 按照Vue写WPF(0):功能实现
  • vb+ACCESS教师管理系统设计设计与实现
  • C++笔记之对指针类型的变量进行+1操作
  • 第六章 游标
  • Github上方导航栏介绍
  • 【vue3+ts】TypeError: Cannot read properties of undefined (reading ‘commit‘)
  • seq2seq、attention、self-attention、transformer、bert
  • 07.计算机网络——数据链路层
  • 海外服务器推荐:国外高性能服务器免费
  • Python基于PyTorch实现卷积神经网络分类模型(CNN分类算法)项目实战
  • JMeter 配置环境变量步骤
  • Rust vs Go:常用语法对比(六)
  • css元素定位:通过元素的标签或者元素的id、class属性定位
  • java享元模式
  • ESP32(MicroPython) 两轮差速五自由度机械臂小车
  • mysql基本函数(五)
  • liteflow 2.10 配置中心简单记录
  • 【C++】引用、内联函数等
  • RocketMQ教程-(4)-主题(Topic)
  • 睡眠健康数据分析
  • Spring Boot 3.x 系列【47】启动流程 | 启动监听器
  • 【KD】知识蒸馏与迁移学习的不同
  • 计算机内存中的缓存Cache Memories