《JavaScript语言精粹》学习心得

时间:2021-12-11 16:49:12

JavaScript语言精粹学习心得

 

  最近总是觉得自己的专业技能方面提升的不是很大,特别是很多基础方面都是知其然不知其所以然,很多时候都是机械的写着程序。前段时间看了下JavaScript语言精粹,于是就决定每天都定下一个主题,交流下学习成果。第一阶段开始《JavaScript语言精粹》,学习完了,有很多心得和体会。对以前没有看过的闭包,js中函数的调用模式,模块化编程,对象等等都觉得有了进一步的体会。

一、对象。

  (1)在js中,除了简单数据类型(StringNumberundefinednullbool)以外,其他的所有值都是对象。

  (2)通常我们用对象字面量来创建一个对象,对象字面量就是用花括号包含起来的键值对。如果在js中没有用关键字var声明,就是一个全局变量。

  (3)可以直接给某个对象的属性赋值,如果对象的属性不存在,那么在赋值的同时,这个属性就默认被添加到对象中。

  (4js中每个对象都会都连接到对象原型(Object.prototype,我们可以通过prototype为对象添加新的属性和方法。

对于对象,在日常工作中平时运用的比较多,一般只是在定义特定格式的对象来缓存数据,需要注意的避免或减少全局变量的污染。在js中,我们说变量的作用域有两种级别:局部变量和全局变量,没有快级变量。在函数中,局部变量的优先级高于全局变量。 

二、函数。

  (1)函数也是一个对象,所有的函数都有一个返回值(即使是undefined),他们连接到Function.prototype这个原型。函数在创建的时候回默认的附加两个隐藏属性:函数的上下文和调用。函数中,如果实参个数多于形参个数时,则多出的实参则会被忽视;如果实参个数少于形参个数,则少的部分则会被替换成undefined

  (2)函数有四种调用方式。四种调用模式,直接影响到this的值。

    a.函数调用:这是我们目前ERP中最常用的调用方式,也是我自己最常写的方法。我们直接定义一个方法,然后在全局调用。在函数调用模式中,this指的是window对象。

    b.方法调用:当函数被定义在某个模块中的时候,此时函数作为属性被调用的时候就是方法调用。在方法调用中,this的指的是被调用方法所属的对象。

    c.构造器调用:这个很好理解,就是通过new来调用,this指得是new出来的对象。方法调用很像我们常用的后端调用方法,实例化一个对象,然后调用实例化的对象的属性或方法。

    d.apply调用:apply方法的调用有两个参数,第一个参数是要绑定给this的值,第二个是一个参数数组。Apply调用模式平时运用的较少,但是却是很重要的调用模式。

  在函数中,还有一个比较重要的体会,平时我们写程序的时候一般都是直接定义方法,然后采用函数调用模式去调用。从函数的职责上来说,如果有内部函数的话,我们这些写也会把内部实现暴露出来,即使是写在快中,也会暴露(ERP303中也有这种写法)。如果使用模块化(函数化)编程的话,我们可以先把返回值定义成对象,然后把私有方法赋值给该对象的属性返回就OK了。

  闭包:上面说到参数的作用域可以从函数的内部访问定义在函数外部的参数或变量,但是如果想从外部访问函数内部怎么办?闭包就可以实现,我们在函数内部定义一个函数,然后返回就可以访问了。

  级联:很容易理解,我们在设置定义的对象属性后,再返回这个对象,就可以继续访问这个对象了。很像Linq中的链式调用。 

三、数组。

  (1)常见访问数组的形式有三种,但是运用的场景不同。

    a) A[0],访问数组下角标

    b) A[“b”],可以访问属性中有空格的数组

    c) A.b访问数组的属性

  归集起来,最后都会转换成A[“b”]这种形式。

  (2)数组有长度这个属性,数组中有很多方法,主要是需要以后的运用中要熟练使用。 

四、正则表达式。

  正则表达式之前没有系统的学习过,但是ERP中很多时候都会用JS去控制逻辑,很多时候需要进行判断。正则表达式很多时候可以简化这种判断,正则需要我们学习的不多,主要是要求我们知道他的规则,然后多练习,熟悉了就好。推荐正则表达式30分钟入门教程https://deerchao.net/tutorials/regex/regex.htm 

五、代码风格。

  好的代码风格让人赏心悦目,如何写出好的代码风格,我觉得涉及的方面很多。例如算法,规范,经验,能力等等。需要我们从各个方面提升自己,后期如果有机会去看看《代码整洁之道》。 

  第一阶段的学习交流完成了,虽然学到了很多(即使很多是基础),但是感觉还是有很多需要自己在日常工作和学习中要加强的,例如原型、扩展、正则、闭包等,都是要花时间去理解和实践的。

每天坚持一点点,总会挖出一口属于自己的井!