CassielLee
JS手写代码之观察者模式 JS手写代码之观察者模式
观察者模式介绍在跟多关于前端设计模式的文章中作者都会将发布订阅模式和观察者模式放在一起介绍,诚然,这两种设计模式确实也非常相似。我们先来看一下观察者模式的定义: 观察者模式定义了对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所
2021-07-12
面试经典问题收集(非代码题) 面试经典问题收集(非代码题)
CSS 实现元素垂直居中 答案:css 实现垂直居中 网络方面 在浏览器地址栏中输入网址到页面显示中间发生了什么? 答案:当输入 xxxxHub 后,到网页显示,其间发生了什么 vue响应式原理
Generator函数分析 Generator函数分析
Generator 分析理解 Generator前面已经介绍过 Generator 是 ES6 提出的新语法用于解决传统的”回调地狱”和 Promise 执行过程无法暂停的问题。那我们现在看一看 Generator 的简单用法: funct
2020-04-28
实现async/await 实现async/await
实现 async/awaitasync/await 简单介绍很多人其实很好奇为什么在 Promise 提出之后又提出了 async/await 语法?似乎他们解决的是同样的事情,都是为了避免”回调地狱”这个问题。事实上,Promise 虽然
2020-04-26
Promise原理探索与实现 Promise原理探索与实现
Promise 原理探索与实现Promise 简单介绍其实大家都知道,在传统的异步编程中,如果异步之间存在依赖关系,比如需要一个异步操作执行成功之后再进行下一个一部操作,那就需要在第一个异步操作成功的回调函数中进行第二步异步操作,如果这样的
2020-04-24
Object.prototype.toString.call、instanceof以及Array.isArray判断数组方法的区别 Object.prototype.toString.call、instanceof以及Array.isArray判断数组方法的区别
Object.prototype.toString.call()每一个继承 Object 的对象都有 toString 方法,如果 toString 方法没有重写的话,会返回 [Object type],其中 type 为对象的类型。但当除
JS手写代码之寄生组合继承和ES6继承 JS手写代码之寄生组合继承和ES6继承
寄生组合继承和 ES6 继承ES5 的继承,实质是先创造子类的实例对象,然后将再将父类的方法添加到 this 上。 ES6 的继承,先创造父类的实例对象(所以必须先调用 super 方法,然后再用子类的构造函数修改 this 寄生组合继承f
2020-04-10
JS手写代码之柯里化和发布订阅EventEmitter JS手写代码之柯里化和发布订阅EventEmitter
实现柯里化原理是利用闭包把传入参数保存起来,当传入参数的数量足够执行函数时,就开始执行函数。 const curry = (fn) => (_curry = (...args) => // args.length 获
2020-04-10
大厂面试练习题-数组去重 大厂面试练习题-数组去重
题目:数组去重实现普通的数组去重// 利用set数据结构 const uniqBy = (arr) => { return [...new Set(arr)]; }; // 同理,字符串去重 const uniqBy = (str
JS手写函数防抖与函数节流 JS手写函数防抖与函数节流
JS 手写函数防抖与函数节流函数防抖概念函数防抖是在事件被触发 n 秒后再执行回调,如果在 n 秒内又被触发,则重新计时。 函数防抖多用于 input 输入框。 实现过程: 箭头函数的 this 继承自父级上下文,这里指向触发事件的目标元
2020-04-10
大厂面试题练习-斐波拉契数列 大厂面试题练习-斐波拉契数列
题目:斐波拉契数列示例// 斐波那契数列为:[1,1,2,3,5,8,13,21,…] 输入:1 输出:1 输入:4 输出:5 答案方法一利用递归(容易栈溢出) function fibonacci(count) { if (co
大厂面试题练习-合并两个有序数组 大厂面试题练习-合并两个有序数组
题目:合并两个有序数组示例输入:[ 2, 8, 10, 13],[ 3, 7, 12] 输出:[ 2, 3, 7, 8, 10, 12, 13] 答案方法一利用 concat 合并两个数组然后排序。 let num1 = [2, 8, 1
1 / 3