UI层的松耦合
将CSS从JavaScript中抽离
- 不允许在js中修正元素的款式,最好要领是掌握className。
- 有破例:比方说定位等题目,能够修正而不运用className掌握。
将JavaScript从HTML中抽离
- 不允许运用 on 属性(比方onclick)来绑定一个事宜处置惩罚顺序。
- js代码应该写在外部文件中然后援用。
将HTML从JavaScript中抽离
- 没法防止,运用前端模板东西,引荐运用Handlebar。
事宜处置惩罚
- 划定规矩
- 划定规矩一:断绝应用逻辑,即把事宜触发须要实行的代码提取出来。
- 划定规矩二:不要分发事宜对象,应用逻辑不应该依赖于event对象来准确完成功用。最好的方法是在事宜处置惩罚顺序中运用event(包含猎取event里的数据,阻挠默许事宜,阻挠事宜冒泡),然后将拿到的 数据在传给应用逻辑。
防止空比较
检测原始值
- 假如你愿望一个值是字符串、数字、布尔值或undefined。最好挑选是运用typeof运算符。
- typeof奇特在于纵然未声明的变量也不会报错。未声明的变量和值为undefined的变量都返回undefined。
- 字符串,typeof返回”string”。
- 数字,typeof返回”number”。
- 布尔值,typeof返回”boolean”。
- undefined,typeof返回”undefined”。
- 若要检测null,直接运用 === 或 !== 。
检测援用值
- 最好的挑选是运用instanceof运算符。
- 但instanceof不能跨frame。
- 函数和数组平常不必instanceof。
检测函数
- 检测函数最好的要领是运用 typeof ,由于它能够跨frame。
- 但在IE8和更早版本中,运用typeof检测用于猎取DOM节点的要领(比方,getElementById等要领)会返回object而不是function。因而检测DOM的要领的最好的要领是 in运算符(假如须要兼容IE8及以下)。比方
"querySelectorAll" in document
。
检测数组
- 最文雅的检测要领:
js
function isArray(value){ return Object.prototype.toString.call(value) === "[object Array]"; }
检测属性
- 检测属性最好的要领就是 in 运算符。
- 假如只想检测实例对象的某个属性是不是存在,则运用hasOwnProperty()。在IE8
将设置数据从代码中分离出来
什么是设置数据
- URL
- 须要展示给用户的字符串
- 反复的值
- 设置
- 任何可能发作变动的值
抽离设置数据(主要)
- 保留设置数据——以至能够提取到零丁的文件中
抛出自定义数据
- 抛出毛病就是本身留下通知本身为何失利的缘由
- 抛出毛病最好的处所着实东西函数中,大众接口中。
- 一旦修复了一个很难调试的毛病,尝试增添一两个自定义毛病。当再次发作毛病时,这将有助于更容易地解决题目。
- 假如正在 编写代码,思索一下:我愿望「某些事变」不会发作,假如发作,我的代码会一团蹩脚。这时候假如某些事变发作,就抛出一个毛病。
- 假如正在编写的代码他人也会运用,思索一下他们运用的体式格局,在特定的情况下抛出毛病。
不是你的对象不要动
不能修正的
- 原生对象
- DOM对象
- 浏览器对象(BOM)
- 类库的对象(jquery)
不能修正的准绳
- 不掩盖要领
- 不新增要领
- 不删除要领