分类: JavaScript
JavaScript刷题方法总结
数组
数组的foreach、filter、map、find
forEach
功能: 循环遍历数组中的每一项,只能遍历数组
写法:
数组对象.forEach(function(参数变量名1,参数变量……
JavaScript常见设计模式
设计模式的定义:在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案
1、单例模式
单例模式的定义:保证一个类仅有一个实例,并提供一个访问……
手撕call、bind、apply
返回值:
call/apply:fun执行的结果 bind:返回fun的拷贝,并拥有指定的this值和初始参数
参数
thisArg(可选):
若thisArg存在,fun的this指……
手撕深拷贝
递归方法实现深度克隆原理:遍历对象、数组直到里边都是基本数据类型,然后再去复制,就是深度拷贝。
步骤:
终止条件,非对象或者null则终止
判断obj,是数……
实现不丢失精度的浮点数加法
function add(a, b) {
let aDigits = (a + "").split(".");//转换为字符串
let aDecimals = aDigits.length > 1 ? aDigits[1] : "";//判断……
事件捕获|冒泡
JS中的事件顺序
两个模型
事件捕获:由外到内
事件冒泡:由内到外,理解成从里面开始冒泡
| |
---------------| |-----------------
| o……
async/await
从字面意思来理解。async 是异步的意思,而 await 是 等待 ,所以理解 async用于申明一个function是异步的,而 await 用于等待一个异步方法执行完……
手撕new()到底做了些什么?
new的实现步骤
要创建 Person 的新实例,必须使用 new 操作符。以这种方式调用构造函数实际上会经历以下 4个步骤:
(1) 创建一个新对象;
var obj = {};
[toc]……
手撕promise.all .any .race
Promise.resolve
Promise.resolve最终结果还是一个Promise,并且与Promise.resolve(该值)传入的值息息相关
传入的参数可以是一个Promise实例,那么……
JavaScript异步promise详解
什么是Promise?我们用Promise来解决什么问题?
Promise 是异步编程的一种解决方案: 从语法上讲,promise是一个对象,从它可以获取异步操作的消息;从本……
手撕防抖与节流
函数防抖(debounce)
在事件被触发n秒后再执行回调,如果在这n秒内又被触发,则重新计时。
手写防抖
假设我们要点击一个按钮新增一条信息,当然我们……
JavaScript 数据类型转换与类型判断详解
内置类型
JavaScript 中有 7 中内置类型,分为基本类型和引用类型。
(1)基本类型
nullundefinedbooleannumberstringsymbol ES6新增bigint(ES6+新……
call,apply,bind区别
JavaScript 为我们专门提供了一些函数方法来帮我们更优雅的处理函数内部this的指向问题,常用的有 bind()、call()、apply()三种方法。
call,apply,bi……
闭包
当程序调用一个函数时,会发生什么?
1JavaScript创建一个新的执行上下文,我们叫作本地执行上下文。
2这个本地执行上下文将有它自己的一组变量,这些……
0.1+0.2!=0.3?
在 JavaScript 中,如果判断0.1 + 0.2 === 0.3,结果是false,就像这样:
console.log(0.1 + 0.2 === 0.3); // false
console.log(0.1 + 0.2); // 0.30000……
ES6迭代器Iterator
迭代器
JavaScript 原有的表示“集合”的数据结构,主要是数组(Array)和对象(Object),ES6 又添加了Map和Set。这样就需要一种统一的接口机制,来处理所……