随笔分类 - JavaScript
摘要:在 JavaScript 中,基本类型是没有属性和方法的,但是为了便于操作基本类型的值,在调用基本类型的属性或方法时 JavaScript 会在后台隐式地将基本类型的值转换为对象,如: var a = "abc"; a.length(); //3 a.toUpperCase(); //'ABC' 在
阅读全文
摘要:前言 前端开发中经常会遇到给对象赋值的操作,比如在我们拿到后端的数据的时候,我们需要一一给我们页面绑定的对象进行赋值,又或者在点击重置按钮的时候,我们经常需要给查询的条件空间进行初始化赋值。本文来总结一下常见的对象赋值,合并的方法。 正文 1、手动给对象进行赋值 // 模拟请求回来的接口 const
阅读全文
摘要:前言 promise 是前端开发人员必须掌握的知识点,本文来总结一下相关学习笔记。 正文 1、什么是prommise,promise 解决了什么问题 a、promise 是什么 Promise 是承诺的意思,承诺它过一段时间会给你一个结果。Promise 是一种解决异步编程的方案,相比回调函数和事件
阅读全文
摘要:前言 出于浏览器同源策略的影响,浏览器会阻止一个域的 js 脚本和另一个域的内容进行交互,因此产生了跨域问题,该问题也经常在面试和开发中遇到,本文来总结一下相关知识点。 正文 1、什么是同源策略 因为浏览器出于安全考虑,存在同源策略,就是说如果协议、域名、端口号有一个不同就产生了跨域,不同域之间的资
阅读全文
摘要:前言 防抖与节流是最常用的高频触发优化的方式,比如在开发中防止重复提交、在下拉加载更多的时候防止重复请求等问题。文本来总结下防抖与节流的区别及使用。 正文 1、防抖 防抖 (debounce): 将多次高频操作优化为只在最后一次执行,通常使用的场景是:用户输入,只需再输入完成后做一次输入校验即可。
阅读全文
摘要:前言 我们知道JavaScript 是单线程的编程语言,只能同一时间内做一件事,按顺序来处理事件,但是在遇到异步事件的时候,js线程并没有阻塞,还会继续执行,这又是为什么呢?本文来总结一下js 的事件循环机制。 正文 浏览器进程,浏览器是⼀个多进程多线程的应⽤程序。其中,最主要的进程有: a. 浏览
阅读全文
摘要:前言 JavaScript 与 HTML 的交互是通过事件实现的,事件代表文档或浏览器窗口中某个有意义的时刻。可以使用仅在事件发生时执行的监听器(也叫处理程序)订阅事件。本文总结一下 JS 中的事件相关知识点。 正文 1、事件流 HTML 中与 javascript 交互是通过事件驱动来实现的,例如
阅读全文
摘要:前言 前面已经了解了代理的创建、代理的处理程序,捕获器和常见的反射API,那么结合这些知识,在开发中能实现哪些代码方面的便捷和优化。 正文 1、使用 get() 和set() 捕获器跟踪对象属性的设置和访问 var person = {} var handler = { set(trapTarget
阅读全文
摘要:前言 假如你已经初步了解了代理和反射的基本知识,知道了只要在代理对象上调用其处理程序,所有捕获器都会拦截它们对应的反射 API 操作。本文来总结一下代理对象的处理程序中不同的捕获器和反射API。 正文 代理可以捕获 13 种不同的基本操作。这些操作有各自不同的反射 API 方法、参数、关联 ECMA
阅读全文
摘要:前言 我们在ES6之前可以通过Object.defineProperty 来实现已有属性的监听,但是这种方式有一个缺点,我们只能通过设置指定属性来监听,我们没法监听整个对象的变化。ES6提供了一种代理模式来扩展对象操作的行为,我们可以给目标对象定义一个关联的代理对象,而这个代理对象可以作为抽象的目标
阅读全文
摘要:前言 JavaScript 中允许使用一些内部特性来描述属性的特征,本文来总结一下对象内部属性与 Object.defineProperty() 的相关知识。 正文 1、属性类型 js中使用某些内部属性来描述属性的特征,比如描述属性是否可以枚举,是否可以修改等特征,我们无法访直接问属性的这些特征,但
阅读全文
摘要:前言 生成器gengrator是es6 新增的函数功能,它允许你定义一个包含自有迭代算法的函数, 同时它可以自动维护自己的状态。 本文来总结一下JavaScript 中生成器的相关知识点。 正文 1、 生成器是什么 生成器函数提供了一个强大的选择:它允许你定义一个包含自有迭代算法的函数, 同时它可以
阅读全文
摘要:前言 我们已经熟练使用set.map.array几种集合类型了,掌握了map(),for..of..,filter()等迭代集合的方法,你是否思考过,js引擎是怎么迭代的,怎么判断迭代是否结束,本文来总结一下 js 新增的迭代器相关在知识点。 正文 1 、迭代器的产生、定义和模拟 (1) for 循
阅读全文
摘要:前言 我们浏览一个网页时可能不太会注意网页前进后退这些操作,但是在开发时你是否想过页面之间的跳转经历了什么,浏览器时怎么保存的页面信息,重新返回上一个页面的时候是否需要重新加载页面呢,会有很对疑问,要想解决这些问题,首先需要知道浏览器中的window下的history对象,本文来详细总结一下该对象的
阅读全文
摘要:前言 JavaScript 中数组的本质是一个对象,它存在的 length 属性值随数组元素的长度变化,但是开发中经常会遇到拥有 length 属性和若干索引属性的对象,被称为类数组对象,类数组对象和数组类似,但是不能调用数组的方法。Array.from()方法解决了这一问题,将类数组转化为数组,本
阅读全文
摘要:前言 JavaScript 函数参数不同于其他编程语言,既不需要规定参数的类型,也不需要关心参数的个数,因此 JavaScript 因函数参数而变得十分灵活,本文总结一下 arguments 参数对象的相关知识点。 正文 1、arguments参数对象是什么 JavaScript 中函数既不需要关心
阅读全文
摘要:前言 本文来总结一下数组的 entries() 方法的使用。 正文 1、entires() 方法语法详解 entries() 方法返回一个数组的迭代对象,该对象包含数组的键值对 (key/value)。 迭代对象中数组的索引值作为 key, 数组元素作为 value。它的原型(__proto__:A
阅读全文
摘要:前言 本文来总结一下数组的 coopyWithin () 方法的使用。 正文 1、coopyWithin () 方法语法详解 coopyWithin() copyWithin() 方法浅复制数组的一部分到同一数组中的另一个位置,并返回它,不会改变原数组的长度。 语法:arr.copyWithin(t
阅读全文