JS进阶 | 详解ES6中的Class
「这是我参与2022首次更文挑战的第12天,活动详情查看: 」 JS进阶系列文章 👇 阅读本文你将学习到 👇 类中的构造函数 类的实例、静态、私有属性 类的实例、静态、私有方法 类的继承 关于 一些扩展知识点 在 ( )之前, 语法中是不支持类的,导致面向对象编程方法无法直接使用,但我们可以通过function来实现模拟出类,而随着 的更新,在 出现了中出现 关键字,可以用于定义类。接下来让我们看看它的如何使用的。 class 下面...
this指向-箭头函数this指向详解
一、思考: 1.为什么不能使用箭头函数来定义methods? 答:因为箭头函数没有自己的作用域,绑定的是父级作用域的上下文, 如果使用箭头函数,那么在获取data里面的数据的时候,this指向window导致访问失败 原因:这跟this的绑定规则有关,在箭头函数中不绑定this,但是如果箭头函数使用了this,会往上层作用域去找,注意:methods对象并不是作用域(所有的对象都没有作用域) 2.不使用箭头函数的情况下,this到底指向...
js 如何判断对象自身为空
前言 如何判断一个对象为空是我们在开发中经常会遇到的问题,今天我们来聊聊几种经常使用的方法,以及在不同的场景下我们如何去使用。 1\. JSON.stringify 方法可以使对象序列化,转为相应的 JSON 格式。 缺点:如果存在 、任意的函数以及 symbol 值,在序列化过程中会被忽略(出现在非数组对象的属性值中时)或者被转换成 (出现在数组中时)。 如下示例: 2\. for in 配合 hasOwnProperty 使用 对当...
能说说你对宏任务 和 微任务 的理解吗
一、背景 js 是一种单线程语言,只有一条通道,那么在任务多的情况下,就会出现堵塞,这种情况下就产生了 多线程,那么就产生了同步任务和异步任务。 同步任务: 在主线程上排队执行的任务,只有前一个任务执行完毕,才能执行后一个任务。是 由 js 执行栈/回调栈执行 的 异步任务: 不进入主线程、而进入任务队列的任务,当主线程中的任务运行完成了,才会从任务队列中取出异步任务,放入主线程中执行 二.宏任务和微任务 微任务和宏任务都是异步任务,它...
请自信的大声告诉面试官forEach跳不出循环
如果面试官,或者有人问你foreach怎么跳出循环,请你大声的告诉ta,跳不出!!!!!!!!!! 为什么呢? 先看看foreach大体实现。 两个输出的结果是一样的没啥问题,这就是foreach的大体实现,既然都知道了它的实现,那么对它为什么跳不出循环♻️应该都知道了,再不清楚的话,再看一下下面的例子。 在demo2函数里面调用demo函数,demo函数的return能阻止demo2函数下面的执行吗?很明显不行啊,demo函数里的re...
面试官:tree-shaking的原理是什么?
前言 在前端面试的过程中, 一直是考察面试者能力的一个重点,而在我们常用的项目打包工具中,无论是 还是 ,都具备一项很强大的能力—— ,所以面试官也常常会问到 的原理是什么,这时我们该如何回答呢?其实核心原理就是 。 在前端开发中,其实 的应用有很多,比如我们前端项目的打包工具 、代码检查工具 ,代码转换工具 都依赖了 的语法分析和转换能力。 AST简单介绍 是 的缩写,这玩意儿的全称叫 ,它可以用来描述我们代码的 。 举个例子: 我这...
2023前端面试题总结:JavaScript篇完整版
JavaScript有哪些数据类型,它们的区别? 1. (数字): 用于表示数值,可以是整数或浮点数。例如:42、3.14。 2. (字符串): 用于表示文本数据,可以用单引号、双引号或反引号括起来。例如:"Hello"、'World'、 。 3. (布尔): 用于表示逻辑值,只有两个可能的值:true和false。 4. (未定义): 表示变量声明了但没有赋值,或者访问不存在的属性时返回的值。 5. (空值): 表示一个空值或者不存在...
for in 和 for of 的区别
在对数组或对象进行遍历时,我们经常会使用到两种方法: 和 ,那么这两种方法之间的区别是什么呢?让我们来研究研究 简单来说就是它们两者都可以用于遍历,不过 遍历的是数组的索引( ),而 遍历的是数组元素值( ) 先说说 for in 更适合遍历对象,当然也可以遍历数组,但是会存在一些问题, 比如: 索引为字符串型数字,不能直接进行几何运算 遍历顺序有可能不是按照实际数组的内部顺序 使用 会遍历数组所有的可枚举属性,包括原型,如果不想遍历原...
浅析 Map 和 WeakMap 区别以及使用场景
📢 愿你我一起在这肆意生活里大放光彩 📢 在阅读红宝书时遇到了 这个关键字,第一次见感觉没啥用,是我见识浅了,其实还是有点用的,有多大我不知道(快跑) 希望这一篇文章能让你对 有更好的理解,或者能够帮你理解 和 这篇文章会先从 再到 一、为什么是 Map ? 1\. 传统对象结构 本质上是一个键值对的集合。和传统对象结构相比,传统的对象只能用 字符串作为键名 ,这就在使用上造成了很大的限制了。这也是新增 的原因之一。 在上面的代码中...