最近一直在学习一些巧妙的设计代码编写的技巧,比如:单例模式,模块模式,类模式,字面量模式等等。其中单例模式、模块模式的写法又可以根据不同的特点有几种不同的变体。哈哈,有点走题了,本文主要说的不是这些,而是怎样利用字面量对象来设计代码。 当初利用三元运算符来代替多个if的逻辑,使得代码看起来简单,虽然牺牲了一点代码可读性,但是代码看起来没有那么臃肿了。对于if逻辑多的时候,可以使用switch来代替众多的if…else if逻辑,但是对于每一个分支比较复杂或者是很类似的时候,看到switch…case一连串,也感觉不爽,那么就是用字面量对象来代替吧,就如我下面所写的那样: [javascript] var checkFn=function(operation){ return { ‘=’:function(e) { return (e.getAttribute(attr) == attrValue); }, ‘~’:function(e) { return (e.getAttribute(attr).match(new RegExp(‘\\b’+attrValue+’\\b’))); … 了解更多
JavaScript code的编写模式多种多样,那么接下来总结一下大概都有哪几种,看看你是否都使用到了这些模式和思维: Separation of concerns 即是我们平时挂在嘴边的行为、样式、结构分离(Content-markup、Presentation-CSS、Behavior-JavaScript),这在代码的扩展性、可维护性、易迁移性方面都可以得到很大的提升 Literals,JSON,namespace Literals指的是codding尽量字面量化,对象字面量、数组字面量、函数字面量、正则字面量等等,这些都比使用new来实例Object、Array、Function性能上更好,甚至也推荐使用变脸的形式来声明函数,避免直接使用function来声明一个函数。 JSON提供一种更简洁、更直观的数据传输,在大小和解析方面都胜于XML。 namespace是尽量将每一个APP封装在一个独立的命名空间下,避免跟其他的APP模块产生耦合,产生错误。“低耦合”是namespace的一个终极目标。 Self-executing functions 顾名思义,就是指自定义函数,它用的比较多的场合是在闭包中,提供给code一个纯净的上下文执行环境,而不会造成全局变量泛滥 Callbacks 回调函数,用过“鸡查询(jQuery)”的人都知道,在执行完一个函数之后,再调用回调函数进行下一步的操作,做到了“流畅的执行流”。 Borrowing methods 别看Borrowing这个单词是“借”的意思,感觉有点高深,其实就是利用了apply和call两个方法来借用其他类或者对象的方法来实现功能,比较多的场合是借用数组的一些方法,比如slice、join等等,比如:[].apply(arguments,[1,3])。这只是普通用的比较多的情况,但是它还可以用在这样的一个场合,类似于“继承”:我首先使用一个“基类”—即是一个包含通用的方法和属性的对象,之后其他的结构跟它类似的对象就可以通过apply或者call来“借用”这个“基类”的方法,说的可能有些枯燥,上点代码: [javascript] var … 了解更多