JavaScript权威指南第6版

阅读笔记

  • JavaScript程序是用Unicode字符集编写的
  • 区分大小写(js文件或标签当中是严格执行的,HTML的不是)
  • 数据类型分为原始类型和对象类型,特殊对象: 全局对象、数组、函数
  • 如果函数用来初始化(使用new运算符)一个新建的对象,称之为构造函数
  • 有用的类:日期(Date)、正则(RegExp)、错误(error)
  • JavaScript解释器有自己的内存管理机制,可以自动对内存进行垃圾回收
  • 只有null和undefined是无法拥有方法的值
  • JavaScript的类型可以分为原始类型和对象类型,也可以分为可以拥有方法的类型和不能拥有方法的类型,同样可以分为可变类型和不可变类型。

类型、值和变量

字符串

  • ES5 字符串通过()换行,反斜线和行结束符都不算字符串的内容,解决字符串当中的单引号和双引号的问题是将其转义
  • 当JavaScript代码和HTML代码混杂在一起的时候,最好是在JavaScript和Html代码中各自使用独立的引号风格,例如在JavaScript中统一使用单引号,HTML中统一使用双引号。
  • 字符串是固定不变的,这些操作都是返回新的字符串

字符串使用

  • 字符串长度 str.length
  • 获取当个字符 str.charAt(index) 0开始计算
  • 截取字符串 str.substring(star, end) 0开始计算

转义字符

  • \n换行符
  • \r回车符
  • \\反斜线
  • \f换页符
  • 英文当中的撇号

模式匹配

布尔值

表达式和运算符

  • 通过this调用宿主对象
  • 并不是方法调用的调用表达式通常使用全局对象作为this关键字的值。ES5中通过严格模式定义的函数在调用的时候将使用undefined作为this的值,this不会指向全局对象。

    对象创建表达式

  • new Object()如果一个对象创建表达式不需要传入任何参数给构造函数的话,那么圆括号可以省略new Object

  • 当计算一个对象创建表达式的值时,和对象初始化表达式通过{}创建对象的做法一样,JavaScript首先创建一个新的空对象,然后,JavaScript通过传入指定的参数并将这个新对象当做this来初始化这个新创建对象的属性。那些被当做构造函数的函数不会返回一个值,并且这个新创建并被初始化后的对象就是整个对象创建表达式的值。如果一个构造函数确实返回了一个对象值,那么这个对象作为整个对象创建表达式的值,而新创建的对象就废弃了。(所以一般不返回对象)

运算符

优先级

  • 属性访问表达式和调用表达式的优先级比运算符要高
  • 相同级别的运算符根据结合性判断执行顺序
  • JavaScript总是严格按照从左至右的顺序来计算表达式

    instanceof

  • 如果左运算符不是对象的话返回false