JS 基础逻辑关系

  JS中万物皆为对象。

 

  JS代码应做到高内聚、低耦合。

      内聚标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。内聚是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系。

      耦合是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。 程序讲究的是低耦合,高内聚。就是同一个模块内的各个元素之间

      要高度紧密,但是各个模块之间的相互依存度却要不那么紧密。

        内聚和耦合是密切相关的,同其他模块存在高耦合的模块意味着低内聚,而高内聚的模块意味着该模块同其他模块之间是低耦合。在进行软件设计时,应力争做到高内聚,低耦合。

 

  JS面向对象三大特征为:封装、继承、多态。

 

  函数的三属性:length形参的个数,name函数名,prototype函数原型。这是看得见的属性,还有scope作用域等看不到的属性。

 

  JS的执行过程:

    1.语法检测:检测你的代码有没有基本的语法错误。

    2.预编译:

      ①会生成一个对象,这个对象装的就是作用域,称为GO(global object),当全部挂载完成后,然后代码再去逐行执行。

        GO = {  }

      ②分析var声明,变量名作为GO对象的属性名,值为undefined。

        GO = { 变量名:undefined }

      ③分析函数声明,函数名作为GO对象的属性名,值为函数体,如果遇到同名的属性,直接覆盖掉。

        GO = { 变量名:undefined

            函数名:函数体 }

    3.逐行执行

      ①函数调用执行前的一瞬间,会生成一个函数的AO对象(active object)。

      ②分析参数,形参作为AO对象的属性名,实参作为AO对象的属性值。

      ③分析var变量声明。

      ④分析函数声明,同名覆盖。

  作用域链:查找过程是从上往下进行查找,从当前父级找起,直到全局作用域。无法找子级作用域或者兄弟级作用域。

 

  闭包:

    定义:当内部函数被保存到了外面的时候,就会形成闭包,闭包会导致原有的作用域链不释放,造成内存的泄露,故而尽量不用闭包则不用。

    功能:①实现共有变量 ②作缓存 ③实现封装,让属性私有化 ④模块化开发,防止污染全局变量。

  

  函数声明和函数表达式区别:

    1.在预编译的时候有区别;

    2.变成了函数表达式以后,这个函数名基本上就没有作用;

    3.表达式可以被直接拿来用的,函数表达式也是表达式,可以直接用执行符号执行。

posted on 2019-06-18 18:49  HYhan  阅读(807)  评论(0编辑  收藏  举报

导航