摘要:
策略模式定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化不会影响到使用算法的客户。 策略模式类图: 该模式涉及到三个角色: 环境角色(Context):持有一个Strategy类的引用 抽象策略角色(Strategy):这是一个抽象角色,通常由一个接口或抽象类来实现。此角色给
阅读全文
posted @ 2017-03-18 17:03
codeing-or-artist-??
阅读(828)
推荐(0)
摘要:
我以计算器为例写一个简单工厂模式,只完成加减乘除4个计算功能,考虑到其他功能方便日后扩展,遵循开放-封闭原则。 简单工厂类图: 先看一下C#的简单工厂是如何实现的: 定义抽象类Operation,加减乘除的实现由子类派生,最后由OperationFactory决定实例化哪一个子类。 客户端调用: j
阅读全文
posted @ 2017-03-17 18:10
codeing-or-artist-??
阅读(207)
推荐(0)
摘要:
function copy(source,destination) { var sourceCopy = source instanceof Array ? [] : {}; for (var item in source) { sourceCopy[item] = typeof source[item] === 'object' && d...
阅读全文
posted @ 2017-03-10 18:03
codeing-or-artist-??
阅读(210)
推荐(0)
摘要:
var timeChunk = function(ary,fn,count){ var obj, t; var len = ary.length; var start = function(){ for(var i=0; i<Math.min(count || 1, ary.length); i++...
阅读全文
posted @ 2017-03-10 11:08
codeing-or-artist-??
阅读(277)
推荐(0)
摘要:
var throttle = function(fn,interval){ var _self = fn,//保存需要被延迟执行的函数引用 timer,//定时器 firstTime = true;//是否是第一次调用 return function(){ var args = argume...
阅读全文
posted @ 2017-03-10 10:54
codeing-or-artist-??
阅读(239)
推荐(0)
摘要:
如果是文本框用onchange,oninput,onpropertychange都可以实时监控值发生变化,但是div设置了属性contenteditable(可编辑文档)就不管用了。 最简单的方法用oninput事件,可惜ie下支持度不好 那么自己实现一个: JQ实现:
阅读全文
posted @ 2017-02-24 18:33
codeing-or-artist-??
阅读(10441)
推荐(1)
摘要:
我们先看下面的代码: IE,火狐,运行结果为1,2 Chrome Safari Opera 运行结果为2,1 很奇怪Chrome Safari Opera环境下onload事件似乎变成了同步执行,我们都知道事件是异步的,应该是先走count.push(1); 再执行oninitialized方法 c
阅读全文
posted @ 2017-02-24 18:02
codeing-or-artist-??
阅读(935)
推荐(0)
posted @ 2017-02-15 16:21
codeing-or-artist-??
阅读(304)
推荐(0)
摘要:
function parse2dom(str){ var div = document.createElement("div"); if(typeof str == "string") div.innerHTML = str; return div.childNodes; };
阅读全文
posted @ 2017-02-11 00:16
codeing-or-artist-??
阅读(895)
推荐(0)
摘要:
一直想实现一个简单版本的requireJs,最直接的办法去看requireJs源码搞明白原理,但是能力有限requireJs的源码比想象的要复杂许多,看了几遍也不是很明白,最后通过搜索找到了一些有价值的资料,理顺了自己的思路,才有了这个教程。 我们都知道define是定义一个模块,require是加
阅读全文
posted @ 2017-02-07 16:49
codeing-or-artist-??
阅读(656)
推荐(0)