日积跬步,apply/call/bind 自我实现

2019-08-11
阅读 4 分钟
3.5k
call/apply/bind 日常编码中被开发者用来实现 “对象冒充”,也即 “显示绑定 this“。 面试题:“call/apply/bind源码实现”,事实上是对 JavaScript 基础知识的一个综合考核。 相关知识点: 作用域; this 指向; 函数柯里化; 原型与原型链; call/apply/bind 的区别 三者都可用于显示绑定 this; call/apply 的区别方式在于...

JavaScript设计模式(八):组合模式

2019-07-16
阅读 3 分钟
5.8k
组合模式:又叫 “部分整体” 模式,将对象组合成树形结构,以表示 “部分-整体” 的层次结构。通过对象的多态性表现,使得用户对单个对象和组合对象的使用具有一致性。

JavaScript设计模式(七):命令模式

2019-07-14
阅读 3 分钟
9.5k
命令模式:请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 生活小栗子:客户下单,订单记录了客户购买的产品,仓库根据订单给客户备货。 模式特点 命令模式由三种角色构成: 发布者 invoker(发出命令,调用命令对象,不知道如何...

JavaScript 设计模式(六):观察者模式与发布订阅模式

2019-07-10
阅读 5 分钟
12.8k
观察者模式:定义了对象间一种一对多的依赖关系,当目标对象 Subject 的状态发生改变时,所有依赖它的对象 Observer 都会得到通知。

JavaScript 设计模式(五):迭代器模式

2019-07-01
阅读 5 分钟
7.1k
文章内容分两部分: 前半部分为 “迭代器模式” 概念; 后半部分为 ES6 中 Iterator (迭代器) 上半部分开始... 迭代器模式:提供一种方法顺序访问一个聚合对象中的各个元素,而又不需要暴露该对象的内部表示。 简单理解(白话理解):统一 “集合” 型数据结构的遍历接口,实现可循环遍历获取集合中各数据项(不关心数据项...

JavaScript 设计模式(四):适配者模式

2019-06-26
阅读 3 分钟
5k
适配器模式:将一个类(对象)的接口(方法或属性)转化成客户希望的另外一个接口(方法或属性),使得原本由于接口不兼容而不能一起工作的那些类(对象)可以正常协作。简单理解就是为兼容而生的 “转换器”。

JavaScript 设计模式(三):代理模式

2019-06-25
阅读 7 分钟
7.6k
当我们不方便直接访问某个对象时,或不满足需求时,可考虑使用一个替身对象来控制该对象的访问。替身对象可对请求预先进行处理,再决定是否转交给本体对象。

JavaScript 设计模式(二):策略模式

2019-06-24
阅读 3 分钟
3.1k
策略模式:定义一系列的算法,把它们一个个封装起来,并且使它们可以相互替换 生活小栗子:诸葛锦囊 诸葛给刘备的锦囊妙计,遇到任何困难都有应对计策。策略模式实现的也是类似的场景。 再来一栗:给喜欢的女生买冰淇淋,事先不了解其喜好,只能集齐各种味道,总会命中。就是比较 “费钱”,这也是策略模式的缺点,需事先...

JavaScript 设计模式(一):单例模式

2019-06-20
阅读 4 分钟
10.8k
停更许久,近期计划更新:设计模式系列。 单例模式:限制类实例化次数只能一次,一个类只有一个实例,并提供一个访问它的全局访问点。 单例模式是创建型设计模式的一种。针对全局仅需一个对象的场景,如线程池、全局缓存、window 对象等。 模式特点 类只有一个实例 全局可访问该实例 自行实例化(主动实例化) 可推迟初...

前端进击的巨人(八):浅谈函数防抖与节流

2019-03-04
阅读 4 分钟
8.5k
JavaScript的执行过程,是基于栈来进行的。复杂的程序代码被封装到函数中,程序执行时,函数不断被推入执行栈中。所以 "执行栈" 也称 "函数执行栈"。

前端进击的巨人(七):走进面向对象,原型与原型链,继承方式

2019-02-18
阅读 9 分钟
5.4k
"面向对象" 是以 "对象" 为中心的编程思想,它的思维方式是构造。 "面向对象" 编程的三大特点:"封装、继承、多态”: 封装:属性方法的抽象 继承:一个类继承(复制)另一个类的属性/方法 多态:方法(接口)重写 "面向对象" 编程的核心,离不开 "类" 的概念。简单地理解下 "类",它是一种抽象方法。通过 "类" 的方式,...

前端进击的巨人(六):知否知否,须知this

2019-01-29
阅读 6 分钟
5.3k
常见this的误解 指向函数自身(源于this英文意思的误解) 指向函数的词法作用域(部分情况) this的应用环境 1. 全局环境 无论是否在严格模式下,全局执行环境中(任何函数体外部)this都指向全局对象 {代码...} 2. 函数(运行内)环境 函数内部,this的值取决于函数被调用的方式(被谁调用) {代码...} this的正解 "thi...

前端进击的巨人(五):学会函数柯里化(curry)

2019-01-22
阅读 6 分钟
11.9k
代码例子会用到 apply/call ,一般用来实现对象冒充,例如字符串冒充数组对象,让字符串拥有数组的方法。待对象讲解篇会细分解析。在此先了解,两者功能相同,区别在于参数传递方式的不同, apply 参数以数组方式传递,call 多个参数则是逗号隔开。

前端进击的巨人(四):略知函数式编程

2019-01-21
阅读 5 分钟
4.5k
系列更文前三篇文章,围绕了一个重要的知识点:"函数"。函数调用栈、函数执行上下文、函数作用域到闭包。可见不理解函数式编程,代码都撸不好。  函数是一等公民 函数与其它数据类型一样,可以作为值赋给变量,作为参数传递或返回值返回,也可以像对象一样给函数创建属性(不推荐给函数加属性,虽然可用)。 函数在实际...

前端进击的巨人(三):从作用域走进闭包

2019-01-19
阅读 5 分钟
5.2k
作用域:负责收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施一套非常严格的规则,确定当前执行的代码对这些标识符(变量)的访问权限——《你不知道的JavaScript上卷》

前端进击的巨人(二):栈、堆、队列、内存空间

2019-01-15
阅读 3 分钟
8.6k
面试经常遇到的深浅拷贝,事件轮询,函数调用栈,闭包等容易出错的题目,究其原因,都是跟JavaScript基础知识不牢固有关,下层地基没打好,上层就是豆腐渣工程,新人小白,踏实踩土才是关键。

前端进击的巨人(一):执行上下文与执行栈,变量对象

2019-01-14
阅读 3 分钟
10.5k
写在开篇 已经不敢自称前端小白,曾经吹过的牛逼总要一点点去实现。 正如前领导说的,自己喝酒吹过的牛皮,跪着都得含着泪去实现。 那么没有年终完美总结,来个新年莽撞开始可好。 进击巨人系列开篇,不忘初心,砥砺前行。 理解执行上下文 执行上下文(Execution Context): 函数执行前进行的准备工作(也称执行上下文环境...