编程实践

UI层的松耦合

  1. 将CSS从JavaScript中抽离

    • 不允许在js中修正元素的款式,最好要领是掌握className。
    • 有破例:比方说定位等题目,能够修正而不运用className掌握。
  2. 将JavaScript从HTML中抽离

    • 不允许运用 on 属性(比方onclick)来绑定一个事宜处置惩罚顺序。
    • js代码应该写在外部文件中然后援用。
  3. 将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
  • 检测数组

    • 最文雅的检测要领:
    jsfunction isArray(value){
        return Object.prototype.toString.call(value) === "[object Array]";
    }
    
  • 检测属性

    • 检测属性最好的要领就是 in 运算符。
    • 假如只想检测实例对象的某个属性是不是存在,则运用hasOwnProperty()。在IE8

将设置数据从代码中分离出来

  • 什么是设置数据

    • URL
    • 须要展示给用户的字符串
    • 反复的值
    • 设置
    • 任何可能发作变动的值
  • 抽离设置数据(主要)

  • 保留设置数据——以至能够提取到零丁的文件中

抛出自定义数据

  • 抛出毛病就是本身留下通知本身为何失利的缘由
  • 抛出毛病最好的处所着实东西函数中,大众接口中。
    • 一旦修复了一个很难调试的毛病,尝试增添一两个自定义毛病。当再次发作毛病时,这将有助于更容易地解决题目。
    • 假如正在 编写代码,思索一下:我愿望「某些事变」不会发作,假如发作,我的代码会一团蹩脚。这时候假如某些事变发作,就抛出一个毛病。
    • 假如正在编写的代码他人也会运用,思索一下他们运用的体式格局,在特定的情况下抛出毛病。

不是你的对象不要动

不能修正的

  • 原生对象
  • DOM对象
  • 浏览器对象(BOM)
  • 类库的对象(jquery)

不能修正的准绳

  • 不掩盖要领
  • 不新增要领
  • 不删除要领
    原文作者:郑洋葱
    原文地址: https://segmentfault.com/a/1190000003062449
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞