JavaScript的学习零散而庞杂,很多时候我们学到了一些东西,但是却没办法感受到进步!甚至过了不久,就把学到的东西给忘了。为了解决自己的这个困扰,在学习的过程中,我一直在...
形成块级作用域 这里循环语句部分是一个父作用域,而循环体内部是一个单独的子作用域。输出3次abc,表明函数内部变量i和循环语句中的i是分离的。 不存在变量提升 暂时性死区(t...
生命周期概览 整个流程分为两个阶段:$compile 和 nodeLinkFn 首先进入$compile。其中tElement和tAttributes为指令传入的属性。如果...
client系列(和内容是否溢出盒子无关) clientWidth:内容的宽度+左右padding clientHeight:内容的高度+上下padding clientLe...
构造一个带有之前结果缓存的函数,减少不必要的计算 用我们的memoizer函数定义fibonacci函数 用我们的memoizer函数定义阶乘函数
为了验证闭包的学习,有必要实现一个简单的依赖加载器。 代码实现 使用 内容转自《你不知道的Javascript》
用途 动态的给某个对象添加一些额外的职责,而不会影响从这个类中派生的其他对象。 简单的例子
简介 职责链使多个对象都有机会处理请求,将这些对象连成一条链,并沿着这条链传递该请求,知道有一个对象处理他为止。避免了请求发送者和接受者之间的耦合。 简单的职责链实现 增加对...
组合模式的作用 组合模式将对象组成树形结构,以表示'整体-部分'的结构。利用对象的多态性统一对待组合对象和单个对象。树结构的节点分为组合节点和叶节点。叶节点下面不会再有节点,...
策略模式定义一系列的算法,把他们一个个封装起来,并且使他们可以相互替换。至少由两部分组成: 1.一组策略类,策略类封装了具体的算法,并负责具体的计算过程。2.环境类conte...
简单的发布订阅模式的通用实现 生成多个发布订阅对象会有多余的浪费。 考虑到有些异步请求,有可能发布了消息,而对该消息订阅的代码还没加载出,所以应该允许先订阅再发布。(设立一个...
代理模式分类 保护代理控制不同权限对象对目标对象对访问。 虚拟代理把一些开销很大对对象延迟到真正需要他对时候才去创建。下面用虚拟代理实现图片预加载: 设计原则 用户可以放心的...
简介 享元模式(FlyWeight)是一种用于性能优化的模式,运用共享技术来有效支持大量细粒度的对象。主要用于当系统中创建了大量类似的对象从而导致内存占用过时的情况。 享元模...