记一道前端高难度面试题

news2025/7/18 8:20:00

目录

提问:如何让下面的这行代码成立

1.错误原因

2.思路

3.解题

4.小结


提问:如何让下面的这行代码成立

var [a,b] = {a:1,b:2}

 

直接运行会报错,报错信息如下:

Uncaught TypeError: {(intermediate value)(intermediate value)} is not iterable
    at <anonymous>

以下是答案:

1.错误原因

根据报错信息得知,是因为{a:1,b:2}不是可迭代的。

es6里面有一个可迭代协议,大体意思是,只要一个对象有一个属性【symbol.iterator】且它是一个函数,且返回一个迭代器,那么这个对象即可迭代。

还有一个点就是,解构赋值左边会得到右边的迭代器,不要求右边一定是数组,只要是可迭代对象即可


 

2.思路

常见的可迭代对象就是数组,是因为数组里面有一个迭代器 ,你可以在通过console.log打印看到数组的prototype属性上面的迭代器,如下图所示:

那么,我们只需照虎画猫给上面那个{a:1,b:2}加一个迭代器即可完成


 

3.解题

// 给对象原型上加一个属性【symbol.iterator】,让它等于一个函数,且这个函数返回一个迭代器,其实就是按照es6的可迭代协议进行操作

Object.prototype[Symbol.iterator] = function(){

  return Object.values(this)[Symbol.iterator]() //调用数组的迭代器

}

 

 4.小结

我们捋一捋刚才过程,首先,我们是先看到控制台报错,说迭代器的问题,我们自然地想到es6的可迭代协议,然后立马想到数组就是一个经典的可迭代对象,打印数组后,发现数组的原型上有可迭代属性,我们的思路也就确定了,给题目中的对象的原型上加一个迭代器。希望我的思路能够对各位有所帮助。

其实如果各位经常刷一些前端面试题的会发现,通常一种方法能解决一类问题,比如本文出现的往原型上加方法。

由此延伸出来的问题也来了,那就是前端安全。

前端安全方面一个非常重要的问题——原型注入,通过原型注入,可以轻易的破坏闭包,破坏第三方库,如elementUI,antd等,这个问题下一篇文章将于近期发布,欢迎评论区交流~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/8407.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手柄零件的工艺设计

手柄零件的工艺设计 目录 一、零件的工艺分析及生产类型的确定 1.零件的作用-------------------------------------------------------------------------- 3 2.热处理-------------------------------------------------------------------------------- 3 3.零件的生产类型-…

架构师书籍推荐

讲实话&#xff0c;要看书只能看看架构师思维相关的数据&#xff0c;开拓一下思路就行&#xff0c;看看别人的看法和观念。 架构师需要积累的技术不要从书上来&#xff0c;去官网看他的说明书&#xff0c;一切纯讲技术类的书籍都有滞后性。 正在用的技术要时常关注一下他官网…

数据结构-图的基本概念

目录 完全图无向图有向图路径长度回路或环⭐⭐无向图-->连通图和连通分量⭐⭐有向图-强连通图和强连通分量完全图 无向图 无向图中每两个顶点之间都存在着一条边。 称为完全图 无向完全图包含n(n-1)/2条边。 有向图 有向图每两个顶点之间都存在着方向相反的两条边。 称…

Nature 、cell 双开花-抗氧化剂与氧化应激

癌细胞经常通过癌症转移调控自身的新陈代谢&#xff0c;进而来有效地支持细胞增殖和存活。因此&#xff0c;因恶性肿瘤转移造成的死亡占癌症整体发病的 95%。2019 年 6 月 27 日&#xff0c;国际 TOP 杂志 Nature 在线发表了中科院上海生化与细胞研究所杨巍维课题组与中科院大连…

el-table中显示echarts的趋势折线图(燃尽图)

显示效果&#xff1a;右边的趋势图其实是查询当前行的30天数据量 背景&#xff1a;为了模仿禅道上的燃尽图&#xff0c;但是查看其源码&#xff0c;发现是用php写的&#xff0c;我们想用vue实现 实现步骤&#xff1a;1.先使用el-table画出表格来 注意&#xff1a;此时数据是…

ctfshow 萌新赛 给她

初识&#xff1a; 一开始看到这个题目以为是sql注入&#xff0c;尝试了各种sql注入转义次都注入不了 .git泄露&#xff1a;最后还是看了一下大佬的解题&#xff0c;发现方向就错了&#xff0c;“给她”——“git”&#xff0c;这题的入口是.git泄露。 我是纯小白&#xff0c;…

如何在React项目中使用TypeScript

本文主要记录我如何在React项目中优雅的使用TypeScript&#xff0c;来提高开发效率及项目的健壮性。 项目目录及ts文件划分 由于我在实际项目中大部分是使用umi来进行开发项目&#xff0c;所以使用umi生成的目录来做案例。 . ├── README.md ├── global.d.ts ├── mo…

SpringBoot SpringBoot 开发实用篇 1 热部署 1.2 自动启动热部署

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇1 热部署1.2 自动启动热部署1.2.1 问题引入1.2.2 自动启动热部署1.2.…

Nacos2.1.1集群和持久化配置以及Nginx负载均衡分发(重点)

Nacos集群和持久化配置&#xff08;重点&#xff09; 1、官网说明 官网文档地址&#xff1a;https://nacos.io/zh-cn/docs/cluster-mode-quick-start.html 对如上图片进行翻译如下 根据下图&#xff0c;需要配置MySQL作为持久化保存Nacos的信息 默认Nacos使用嵌入式数据库实现…

如何在 Visual Paradigm 中创建流程图丨使用教程

让我们看看如何在 Visual Paradigm 中绘制流程图。我们将在这里使用一个非常简单的流程图示例。完成本教程后&#xff0c;您可以扩展示例。 1.从主菜单中选择图表 > 新建。 2.在New Diagram窗口中&#xff0c;选择Flowchart并单击Next。 3.您可以从空图表开始&#xff0c;…

股价暴跌了74.5%后,乐信第三季度财报可能会低于市场预期

来源&#xff1a;猛兽财经 作者&#xff1a;猛兽财经 乐信2022年第三季度财报前瞻 此前&#xff0c;乐信(LX)曾在2022年11月10日宣布&#xff0c;公司将于2022年11月16日发布2022年第三季度财报。 猛兽财经认为&#xff0c;乐信2022年第三季度的实际财务业绩可能会令市场失望。…

最佳使用案例NO.1–干涉测量

为了营造今年的节日气氛&#xff0c;我们决定发布4份特别的新闻通讯展示我们的“2019最佳使用案例” 在VirtualLab Fusion中所实现的快速物理光学技术为著名的干涉仪的快速仿真提供了强有力的工具&#xff0c;从而使我们能够研究干涉图样中的相干和色散效应。 基于物理光学的Vi…

webpack5 Css 兼容性处理postcss-loader

postcss-loader | webpack 中文文档webpack 是一个模块打包器。它的主要目标是将 JavaScript 文件打包在一起&#xff0c;打包后的文件用于在浏览器中使用&#xff0c;但它也能够胜任转换&#xff08;transform&#xff09;、打包&#xff08;bundle&#xff09;或包裹&#xf…

震撼来袭,最具中国特色的微服务组件:新一代SpringCloud Alibaba

都说程序员工资高、待遇好&#xff0c; 2022 金九银十到了&#xff0c;你的小目标是 30K、40K&#xff0c;还是 16薪的 20K&#xff1f;作为一名 Java 开发工程师&#xff0c;当能力可以满足公司业务需求时&#xff0c;拿到超预期的 Offer 并不算难。然而&#xff0c;提升 Java…

【嵌入式 · 机器人】在 Linux 下安装 ROS2(机器人操作系统)

安装要求 安装 ROS2 需要保证 Linux 系统的发行版是 Ubuntu&#xff0c;并且不同版本的 Ubuntu 只能安装对应版本的 ROS2。 系统不是 Ubuntu 怎么办&#xff1f; 系统是 Mac OS 或 Windows&#xff1a;安装一个 Ubuntu 的虚拟机&#xff0c;在虚拟机里安装 ROS2。&#xff08;…

【深入浅出Spring6】第三期——作用域和工厂模式

一、Bean 的作用域 作用域以下用 scope 代替&#xff0c;在不同的应用情景下可以使用的参数值下是不同的我们以普通 Java 工程为例&#xff1a;可选的参数值有两个 singleton、prototype $ singleton 默认情况下&#xff0c;scope 的属性值就为 singleton,当然我们也可以显式…

一种清洁机器人设计及仿真

目 录 第1章 绪论 1 第2章 清洁机器人路径规划方法的分类及现状 5 2.1 基于事例的学习规划方法 5 2.2 基于环境模型的规划方法 6 2.3 基于行为的结构 7 第3章 清洁机器人的设计任务及方案分析 10 3.1 清洁机器人竞赛介绍 10 3.2 设计任务分解 11 3.3 清洁机器人任务分析及基于行…

Unity和UE4两大游戏引擎,你该如何选择?

目录 游戏引擎 2 ——> 难易区别 编程语言 3 ——> 游戏产品 UE4制作的游戏产品 Unity制作的游戏产品 产品类型 5 ——> 资源商店 6 ——> 人才需求 平均薪资 总结 游戏引擎 Unity和UE4都是游戏引擎&#xff0c;所谓游戏引擎就是集成了复杂功能的游戏…

短视频/直播+教育成为教育新常态

互联网时代&#xff0c;网络视听应用已经成为吸引新网民的主要力量&#xff0c;2020年&#xff0c;在新增的3625万网民中&#xff0c;有23.9%是为了使用网络视听应用而来。网络视听应用中&#xff0c;最受欢迎的当属短视频&#xff0c;已然成为新的国民级应用行业。 如今&…

Excel之数据透视NotePad之列编辑

在日常工作中&#xff0c;经常有数据处理的需求&#xff0c;要统计个数&#xff0c;这里就可以使用到工具的一些功能&#xff0c;如 Excel、Notepad&#xff0c;记录下来&#xff0c;分享功能。 一、Excel 软件 Excel 功能过于强大&#xff0c;下面只是简单分享下日常使用到的…