01 2013 档案
摘要:我已经写过一个方法了,另一个地方要调用这个方法,除了传参不同,没别的区别了,这样的话,我们就不用再实现一次这样的方法了。通常,我们写了一个基类,然后他的子类中,要重写这个方法。但是重写的部分也会用其原来的方法的内容。所以我们通常这么写。var child = new parent();child.prototype.override(){ parent.prototype.override.apply(this,argument); this.otherControl();}js中的访问者实现很简单,谁叫它是个弱类型呢。如果是c++这样的语言,那么值类型或者对象的类型转换中要做的事就太多了..
阅读全文
摘要:外观模式再简单不过了。var stopEvent = function( e ){ //同时阻止事件默认行为和冒泡e.stopPropagation();e.preventDefault();}jQuery源码中也有: first: function() { return this.eq( 0 ); }, last: function() { return this.eq( -1 ); }只不过把取某一个jQuery对象,换了个外观而已。
阅读全文
摘要:基类,我们需要一个基类。数据库访问我们通常有一个基类,用于操作的统一性。那么,我们现在需要一个富客户端的前端基类。为什么我们需要它。1.我们需要一个dom元素与javascript之间的桥梁。2.我们需要一个可伸缩布局的方案。3.它是可拖动的。4.它是可改变大小的。5.它是可参数化配置的。6.它是可绑定数据源的。7.它是可隐藏也可延迟加载的。我们需要这么一个基类,避免我们重复写很多相似的代码、我们一个一个来说它们的实现。1.构建桥梁通常我们都用document.getElementById来用javascript获取一个dom元素。但这里,我们富客户端的方案是用javascript生成dom对
阅读全文
摘要:既然是总结,就不要重复书中内容了,适当总结、扩展、思考。 实际上会用在javascript上面的算法实在是不会太多,但由于js非编译语言的特性,所以浏览器解释器能给的优化不能算太好。优化仅有的一些循环和流程控制显得非常必要。 然后我一上来就中枪了,以为for in这样的写法会比较好写,所以一直做数组操作的时候使用这个方法。但是,这个方法会同时搜索实例或原型属性,所以每次迭代的时候都会产生额外的开销。因些,不要用for in来遍历数组。 递归如果次数太多,就不要使用了,会抛出异常。改用迭代。 如果不是均匀分布的话,可以使用二分法,找出数据出现次数多的一部分做数据判断切割。 书中提到了三...
阅读全文
摘要:既然是总结,就不要重复书中内容了,适当总结、扩展、思考。访问dom与操作dom是javascript存在的最重要意义。为什么要这么说,因为js就是为浏览器而生的。浏览器上的每一个文字图片与布局的存在,都是dom。操作dom代价是昂贵的,因为是两个相当于跨域的操作。因此,我们需要在这样的操作中做一些优化。1.用变量缓存dom2.innerHTML比原生操作更快 ------在最新的浏览器反过来,但是还是用innerHTML比较好。3.elemnt集合的length操作是实时的,所以会造成性能问题。也是用变量缓存4.用children比childNodes好,也就是说用一些新的dom操作比老的好。
阅读全文
摘要:既然是总结,就不要重复书中内容了,适当总结、扩展、思考。1.访问方式由于JavaScript的数据结构很简单,所以数据访问的方式很少。直接量、变量、数组元素、对象成员。访问前两个相对快些。2.作用域var doc = document,hasOwn = Object.prototype.hasOwnProperty,push = Array.prototype.push看了gitHub上许多成熟的js类库都有这样的写法,把全局变量保存在局部变量中使用,访问速度会比直接使用快。因为全局变量被放在作用域最末端。如果一个变量定义两遍,那么会取前面一个,然后全局变量又被放在最末端,所以你懂的。3.尽可
阅读全文
摘要:既然是总结,就不要重复书中内容了,适当总结、扩展、思考。书中提到以下几种脚本引用方式。1 直接引用1.1 放在head中 相比body会阻塞dom元素生成,使页面空白1.2 放在body的最后 ---较好的实践方法用此颜色2 脚本合并打包3.无阻塞方式加载3.1 用defer不会阻塞进程 但是不能跨浏览器3.2 动态添加script3.3 xmlhttpRequest注入 不能跨域、不能cdn为什么我会标注三种最佳实践方式,实际上这三种是不重复的。1.放在body最后,会使dom元素在script的下载阻塞页面之前生成。2.脚本合并压缩可以减少http请求数以及减小文件大小。3.动态添加...
阅读全文