【学习笔记】五:引用类型

时间:2021-09-11 15:44:16

引用类型的值(对象)是引用类型的一个实例。ECMAScript提供了很多原生的引用类型(例如Object),以便开发人员用以实现常见的计算任务。

1.Object类型

  1)创建Object实例的两种方法:new Object()和对象字面量表示法。一般常用对象字面量标识法:一是因为代码量少,二是对象字面量可以在函数传参时封装可选参数。

  2)访问对象属性的两种方法:点表示法和方括号方法。一般用点表示法,方括号方法只有在变量访问属性、属性名中包含特殊字符时使用。

2.Array类型

  1)创建Array实例的两种方式:使用Array构造函数和数据对象字面量。

    ECMAScript数组的每一项都可以保存任何类型的数据。同数组的大小是动态可变的,即随着数据的添加自动增长。可以通过修改数组的length属性,动态增加或者减小数组的长度。

  2)检测数组:instanceof、Array.isArray()(ES5中新增)

  3)转换方法:toLocaleString()、toString()、valueOf()方法

  4)数组栈方法:push()、pop()

  5)数组队列方法:shift()、push()、unshift()

  6)数组重新排序方法:reverse()、sort(),有时候通过将比较函数传参给sort()方法实现按数值排序(因为sort()函数默认是按字符串比较排序的,绝大多数的时候需要按数值比较排序)。

  7)数组常用操作方法:concat()、slice()、indexOf()、lastIndexOf()

  8)数组迭代方法:every()、filter()、forEach()、map()、some()

  9)数组归并方法:reduce()、reduceRight()

3.Date类型

  1)初始化:Date.parse()和Date.UTC(),不过new Date() 函数会模仿这两个函数的初始化过程,直接生成日期。

4.RegExp 类型

  1)正则表达式的构造有两种形式:字面量形式和构造函数形式,两种形式参数略有区别,构造函数形式需要双重转移,同时字面量形式始终会共享同一个RegExp实例,而构造函数形式创建的每个都是一个新实例。ES5中规定每次创建都应创建RegExp新实例。

  2)实例属性:global、ignoreCase、lastIndex、multiline、source

  3)实例方法:exec()、test()

  4)构造函数属性:input、lastMatch、lastParen、leftContext、multiline、rightContext

5.Function 类型(函数是对象,函数名是指针)

  1)没有重载

  2)函数声明和函数表达式的区别:解析器在向执行环境中加载数据之前,对函数声明和函数表达式并非一视同仁。解析器会通过一个名为函数声明提升的过程率先读取函数声明,并使其在执行任何代码之前可用;至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解析器执行。

  3)函数可以做参数,可以做函数返回值。

  4)函数内部属性:

    callee:函数arguments对象的一个属性,该属性是一个指针,指向拥有这个arguments对象的函数。(在函数内部可以代替函数名调用函数,消除函数使用的耦合性)

    caller:函数对象的属性caller,保存着调用当前函数的函数的引用。

  ·但是在严格模式下arguments.callee会导致错误。

  5)函数属性和方法:

    length:函数接受的参数个数

    apply和call:修改函数运行作用域

    bind:创建一个函数实例,其this值会被绑定到bind函数的参数值

    toLocaleString和toString:返回函数代码,可以在调试代码时使用。

6.基本包装类型

  ES为基本类型Boolean、Number、String 创建了相应的基本包装类型,从而是这几个基本类型可以使用一下操作方法操作这些数据。基本包装类型是特殊的引用类型,但是其生存周期近存在于代码的执行瞬间,由后台自动创建完成相应的处理,一般不会手动使用。

  1)Boolean基本包装类型:建议永远不要手动使用

  2)Number基本包装类型:toFixed()、toExponential()、toPrecision()

  3)String基本包装类型:  length、charAt()、charCodeAt()、concat()、slice()、substring()、substr()、indexOf()、lastIndexOf()、trim()、toLowerCase()、toUpperCase()、replace()、split()。

7.单体内置对象

  定义:由ES实现提供的,不依赖于宿主环境的对象,这些对象在ES程序执行之前就已经存在了。Object、Array、String、Global、Math

  1)Global对象

    所有全局作用域中定义的属性和函数,都是Global对象的属性。

    encodeURI()、encodeURIComponent()、decodeURI()、decodeURIComponent()、eval()

    Web浏览器将这个global全局对象作为window对象的一部分实现的。

  2)Math对象

     min()、max()、ceil()、floor()、round()