摘要:
介绍 外观模式(Facade)为子系统中的一组接口提供了一个一致的界面,此模块定义了一个高层接口,这个接口值得这一子系统更加容易使用。 正文 外观模式不仅简化类中的接口,而且对接口与调用者也进行了解耦。外观模式经常被认为开发者必备,它可以将一些复杂操作封装起来,并创建一个简单的接口用于调用。 外观模 阅读全文
摘要:
官方:策略模式定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化不会影响到使用算法的客户。策略模式是常用的模式,例如jQuery的 $(selector).animate(styles,speed,easing,callback) 其中的easing 封装了很多的算法(line 阅读全文
摘要:
/* * 缓动算法: 接收4个参数,分别表示: 动画已消失(用)的时间(t), 小球原始位置(b), 小球目标位置(c), 动画持续的总时间(d) */ var Tween = { Linear: function(t,b,c,d){ return c*t/d + b; }, Quad: { eas 阅读全文
摘要:
obj.getBoundingClientRect()该方法获得页面中某个元素的左,上,右和下分别相对浏览器视窗(左边,上边)的位置对象(注意是个对象),与浏览器的右边,下边没关系。 如果要得到left,则是obj.getBoundingClientRect().left 兼容性:ie5 以上 以及 阅读全文
摘要:
JS中进行 A+B 这种操作时会经历这样一个过程: 将A和B都转换为原始值(primitive,执行ToPrimitive),这里记为A1,B1 如果A1和B1中有一个值为string,则将A1、B1都转换为string(执行ToString),其值记为A2、B2,将A2 B2连接后就是A+B的结果 阅读全文
摘要:
1 函数名字问题 var f = function g(){ return 23; }; typeof g();//报错 这是一个名字是g的function expression,然后又被赋值给了变量f。 这里的函数名g和被其赋值的变量f有如下差异: 函数名g不能变动,而变量f可以被重新赋值 函数名 阅读全文
摘要:
对象的原始值为字符串,数字,布尔,undefined,null五类,不包括原始类型的另外两类object 与symbol。Object.prototype.valueOf()用 MDN 的话来说,valueOf() 方法返回指定对象的原始值。JavaScript 调用 valueOf() 方法用来把 阅读全文
摘要:
我认为观察者模式,可以认为就是订阅发布模式。最简单的就是 订阅通过obj.onclick = callback(callback 为回调函数),点击的时候相当于发布 。典型的实例,面试。面试者想要知道面试的情况,填写表单(订阅,形成对象,一般为数组,或键值为数组的对象)。招聘方按照表单,通知(发布, 阅读全文
摘要:
单例模式也称作为单子模式,更多的也叫做单体模式。为软件设计中较为简单但是最为常用的一种设计模式。 下面是维基百科对单例模式的介绍: 在应用单例模式时,生成单例的类必须保证只有一个实例的存在,很多时候整个系统只需要拥有一个全局对象,才有利于协调系统整体的行为。比如在整个系统的配置文件中,配置数据有一个 阅读全文
摘要:
定义: 柯里化(Currying),又称部分求值(Partial Evaluation),是把接受多个参数的函数变换成接受一个单一参数(最初函数的第一个参数)的函数,并且返回接受余下的参数而且返回结果的新函数的技术。好像不是很好理解,我的理解是,柯里化其实是通过闭包的形式,返回函数,再用返回的函数去 阅读全文