随笔分类 -  JavaScript

摘要:策略模式 在选择最佳策略以处理特定任务(上下文)的时候仍然保持相同的接口; 外观模式 通过把常用方法包装到一个新的方法中,从而提供一个更为便利的API 代理模式 通过包装一个对象以控制对它的访问,其主要方法是将访问聚集为组成或仅当真正必要的时候才执行访问,从而避免了高昂的操作开销 这种模式的其中一个 阅读全文
posted @ 2015-03-15 18:48 JinksPeng 阅读(265) 评论(0) 推荐(0)
摘要:远程脚本 XMLHttpRequest JSONP 和XHR不同,它不受同域的限制; JSONP请求的可以是任意的文档; 请求的URL通常格式为http://example.js?calback=CallFunction 框架 frame通常使用的情况 沙箱隔离。 引用第三方内容。 独立的带有交互的 阅读全文
posted @ 2015-03-14 14:11 JinksPeng 阅读(177) 评论(0) 推荐(0)
摘要:单元测试 单元测试是比集成测试更底层的测试,用于确保特定的后台代码片段能正常运行; 前端单元测试更多是为了发现浏览器兼容性的bug; 断言 断言是测试的核心,是一些表述代码期望执行结果的语句 常见测试类库 "QUnit.js" "jasmine.js" 驱动 驱动实际上是一个守护进程,它整合了不同的 阅读全文
posted @ 2015-03-13 11:38 JinksPeng 阅读(240) 评论(0) 推荐(0)
摘要:性能 提高性能最简单的办法就是减少HTTP的请求数量,每个HTTP请求除了有TCP开销外,还包含大量的头信息; 让页面和其资源文件保持较小的体积将减少网络用时,对于互联网上的应用而言,这才是真正的瓶颈; 将多个脚本文件合并成一个或是将多个CSS合并成一个样式表能减少HTTP连接数量;如果是后者的话确 阅读全文
posted @ 2015-03-12 10:16 JinksPeng 阅读(209) 评论(0) 推荐(0)
摘要:CommonJS CommonJS规范,主要解决命名空间管理模块和用一套标准的编程模式来加载模块; 很快成为了JavaScript模块写法的事实标准; 它包含IO接口,底层的套接字流,以及单元测试等标准; 模块的声明 模块被分隔为不同文件,通过给exports对象添加内容来对外暴露模块的变量的方法, 阅读全文
posted @ 2015-03-10 20:09 JinksPeng 阅读(192) 评论(0) 推荐(0)
摘要:Object.constructor object.constructor Object.create() Object.create(proto); Object.create(proto, descriptors) Object.defineProperties() Object.defineP 阅读全文
posted @ 2015-02-11 14:24 JinksPeng 阅读(182) 评论(0) 推荐(0)
摘要:String.charAt()/String.charCodeAt() ; n:The index of the character that should be returned from string. String.concat() String.fromCharCode() ; c1, c2 阅读全文
posted @ 2015-02-11 12:54 JinksPeng 阅读(209) 评论(0) 推荐(0)
摘要:Array.every() ; ; Array.concat() Array.indexOf() /Array.lastIndexOf() ; js ['a','b','c'].indexOf('b') // = 1 ['a','b','c'].indexOf('d') // = 1 ['a','b 阅读全文
posted @ 2015-02-11 10:48 JinksPeng 阅读(165) 评论(0) 推荐(0)
摘要:![](http://images.cnitblog.com/blog/676883/201501/311437063312587.png) 阅读全文
posted @ 2015-01-31 14:37 JinksPeng 阅读(133) 评论(0) 推荐(0)
摘要:动态渲染视图 当待渲染的视图内容不多的时候,可以将视图元素放在控制器或者状态里 此外也可以将静态页面包含再页面中,再必要时候显示或隐藏; 模版 js模版的核心概念是,将包含模版变量的HTML片段和JavaScript对象做合并,把模版变量替换为对象中的属性值, 以下都以jquery.tmpl模版为例 阅读全文
posted @ 2015-01-17 16:23 JinksPeng 阅读(261) 评论(0) 推荐(0)
摘要:访问视图 常见地视图模式时一个视图对应一个控制器,视图包含一个id,通过id传入控制器;在视图之中的元素则使用class 这里会使用jquery的选择器,为了减少使用,可以设置一个专门用于存放选择器到变量的映射表 委托事件 通过设置一个events对象代理,进行事件的委托和移除 状态机 作用:管理多 阅读全文
posted @ 2015-01-17 16:08 JinksPeng 阅读(163) 评论(0) 推荐(0)
摘要:导语 将状态保存在客户端可以加快页面反映;但应当避免状态或数据保存在DOM中;在MVC中,状态应该保存在控制器中 控制器是视图和模型的纽带,只有控制器知道视图和模型的存在并将它们连接在一起;当加载页面时,控制器将事件处理程序绑定在视图里,并适时地处理回调,以及和模型必要地对接 模块模式 用来封装逻辑 阅读全文
posted @ 2015-01-17 14:10 JinksPeng 阅读(240) 评论(0) 推荐(0)
摘要:寻址引用 源代码现存的问题:当保存或通过find()查找记录时,所返回的实例并没有复制一份,因此对任何属性的修改都会影响原始资源;这里我们只想当调用update()方法时才会修改资源 转载数据 数据的预加载:如 一个可翻页列表的时候,预加载下一页的数据 长列表的时候,当滚动到一定位置就自动加载并插入 阅读全文
posted @ 2015-01-16 10:41 JinksPeng 阅读(163) 评论(0) 推荐(0)
摘要:MVC和命名空间 构建对象关系映射 如: 任何model的改变会向后台发起一个ajax请求 model和view绑定,当一个实例改变时,马上从view中反映出来 原型继承 这里用到Object.create,对于没有的浏览器,可以模拟方法 添加ORM属性 持久化记录 将引用保存至新创建的实例中以便任 阅读全文
posted @ 2015-01-15 14:42 JinksPeng 阅读(186) 评论(0) 推荐(0)
摘要:现代浏览器都支持的事件 click dbclick mouseover mousemove mouseout focus blur change(表单输入框特有) submit(表单特有) addEventListener/removeEventListenr 注意如果第二个参数是匿名函数的话,不销 阅读全文
posted @ 2015-01-15 11:10 JinksPeng 阅读(668) 评论(0) 推荐(0)
摘要:添加私有函数 函数调用--作用域 使用self暂存this 使用apply保持原始的上下文 '委托'调用 阅读全文
posted @ 2015-01-15 10:10 JinksPeng 阅读(136) 评论(0) 推荐(0)
摘要:简单的控制器结构 即 创建类 根据传入参数稍作处理 给“类”库添加方法 基于原型的类继承 给“类”库添加继承 控制"类"库的作用域 阅读全文
posted @ 2015-01-14 20:24 JinksPeng 阅读(209) 评论(0) 推荐(0)
摘要:注意分离: 通过将CSS关闭来测试页面是否仍然可用,内容是否依然可读; 将JavaScript关闭来测试页面仍然可以执行正常功能;所有连接是否正常工作;所有的表单是否可以正常工作; 不使用内联处理器(onclick之类)和内联样式属性,因为这些不属于内容层; 使用语义上有意义的HTML元素; DOM 阅读全文
posted @ 2014-12-13 16:18 JinksPeng 阅读(170) 评论(0) 推荐(0)
摘要:单体模式:保证一个特定类仅有一个实例;即第二次使用同一个类创建新对象时,应该得到与第一个所创建对象完全相同对象; 在JS中,可以认为每次在使用对象字面量创建对象的时候,实际上就在创建一个单体; 当使用new创建新对象时 使用静态属性中的实例: function Universe() { if(typ 阅读全文
posted @ 2014-12-13 14:38 JinksPeng 阅读(191) 评论(0) 推荐(0)
摘要:原型继承 ://现代无类继承模式 基本代码: var parent = { name : "Papa" } var child = object(parent); function object(o) { function F() {}; F.prototype = o; return new F( 阅读全文
posted @ 2014-12-13 13:38 JinksPeng 阅读(156) 评论(0) 推荐(0)