克隆的原型模式
1 | var Plane = function(){ |
1 | //输出结果 |
拷贝扩展
如果只是拷贝自身可枚举属性,就可以只用 Object.assign 方法;
如果是要拷贝原型上的属性,就需要 Object.assign , Object.create, Object.getPrototypeOf 方法结合使用
如果是拷贝get/set 属性,就需要结合 Ojbect.getOwnPropertyDescriptors 方法
基于原型链的委托机制就是原型继承的本质
javascript 根对象 Object.prototype
惰性加载
1 | var addEvent = function(elem,type,handler){ |
测试惰性加载
透明的单例模式
1 | var CreateDiv = (function(){ |
透明的单例模式
代理实现单例
1 | var CreateDiv= function(html){ |
单例模式的核心是确保只有一个实例,并提供全局访问
1、使用命名空间
2、使用闭包封装私有变量
通用惰性单例
1 | var getSingle = function(fn){ |
策略模式
核心思想:定义一系列算法,规则,把它们封装起来,并使它们可以互相替换
1 | var strategies = { |
代理模式
1 | var myImage = (function(){ |
代理模式
迭代器模型
1 | var each = function(ary, callback){ |
内部迭代器模型
1 | //外部迭代器 |
命令模式
1 | var MenuBar = { |
宏命令
1 | var a = { |
模板方式模式
1 | var Beverage = function(){}; |
1 |
|
享元模式
1 | var Model = function(sex){ |
1 | //对象池 |
对象池
职责链模式
1 | var order1 = function(type,pay,stock){ |