单例模式
单例模式是很常见的一种设计模式,保证一个类仅有一个实例,并提供一个访问它的全局访问点。
单例实现
根据上面定义很容易想到用闭包来实现
var dom = (function() {
var d;
function createdDiv(html) {
if (d) {
...
发布订阅模式
发布订阅模式也成为观察者模式,以下面三部分组成
发布者
订阅者
消息队列
上面介绍了组成可能你还有疑惑,下面就举一个例子,小明打算去售楼处去买一套房子,销售小姐告诉他这套住宅暂时没有房源,小明于是留了手机号码给他,某一天有房源的时候通知他。
上面例子中,发布者就是售楼中心,订阅者就是小明,...
代理模式
前言
代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问。
例如:
下面就介绍最常用的几种场景
保护代理
例如作为孩子我们总希望他健康成长,在成长路上遇到的烦恼会被家长解决,这样来看其实就是保护代理,下面用一段伪代码来实现。
function Children() {
thi...
相等运算符比较
看《你所不知道的JavaScript》一书,发现对相等运算符的描述推翻了许多人的固有影响,如果熟悉其机制,可以方便我们快速开发
function foo(s) {
s = s == null ? true: s;
// ...
};
上面这段代码我们估计经常使用,其实就是使用了隐式...
函数防抖
前言
为什么需要使用防抖函数
当一个事件触发太多的时候会出现性能问题,比如mousemove、resize、scroll等,看一个没有任何防抖的mousemove事件
什么是防抖?
简单就是你任意触发我只执行最后一次操作
根据上面的定义可以很轻松编写出一个简单的防抖函数
实现
// ...
函数节流
本来打算从零写一个,不过意外看到一篇好文,下面就根据他的思路来实现一个节流,JavaScript专题之跟着 underscore 学节流
前言
节流有两种实现,第一种使用定时器,另外一种则是根据时间戳,判断两次执行的时间间隔,下面简单些一下这两种的实现。
定时器
function thr...
使用rollup编写现代化模块
之所有选用 rollup 是因为它可以减少打包体积和提高构建速度,下面介绍不会详细讲解配置,你可以自行查阅官方文档
ES6 已经出现很久了,但是为了兼容以前的浏览器,我们还是需要使用各种构建工具,例如 webpack,在使用的时候很方便,可以通过 babel 转换 es6 的语法,比如下面导...
漫谈ECMAScript有意思的设计
最近重读《你所不知道的 JavaScript》发现一些有趣的点,想分享下。
块级作用域
ES6 引用了 let 和 const,这实际上带来了块级作用域,在 ES6 之前只存在全局作用域和函数作用域,相信小伙伴对这句话应当不陌生,下面就来聊聊一个 ES6 之前如果实现块级作用域。
思考下面一个...
理解原型和原型链
参考: 深入理解javascript原型和闭包(完结)
JavaScript是弱类型,除了基本类型都可以理解为对象,这也是为什么说JavaScript中一切皆对象的原因。
不过在对象中函数比较特殊,对象就是由函数创造出来的,这听起来是不是有点先有鸡后有蛋,先有蛋后有鸡的感觉,这也跟后面要说到...
初探 node 接口开发
接口请求与其它资源请求没有什么不同,都是借助 http 协议返回对应的资源,这篇文章简单介绍一下 node 开发接口以及如何管理多个接口情况和接口风格。
标题关联了 node,主要因为 node 开启一个服务器是很简单,而且语法基本相同没有太多负担,这篇文章主要讲解思路,换算到其它语言也是可以...