JavaScript引用类型

Object类型

建立Object对象有两种方式:javascript

  • new Object()
  • 对象字面量表示法

对象字面量表示法定义对象时,实际上不会调用Object的构造函数(Firefox2及更早版本除外)前端

Array类型

建立Array对象有两种方式:java

  • new Array()
  • 数组字面量表示法

检测数组类型

instanceof操做符的不足:windows

若是同个WEB页面存在多个框架,框架1里建立一个数组array,在框架2中用instanceof检测数组array,返回结果并非true,而是false。这是由于array instanceof Array实际上至关于windows1.array instanceof windows2.Array数组

Array.isArray()方法用来检测某对象是否时数组,它的不足之处是部分浏览器版本不支持该方法。浏览器

转换方法

  • 数组转字符串app

    toString()toLocalString()valueOf()方法能够将数组转换为字符串,每项以,分隔框架

  • 自定义分隔符函数

    join()方法,能够指定字符串的分隔符this

重排序

  • 反转数组

    reverse方法

  • sort方法

    该方法默认将每一个元素转为字符串比较大小,较小值在前端。它也能够接受一个比较函数:函数接受两个参数,当返回值为-1时,说明前一项值比后一项值小,当返回值为0时,说明前一项值和后一项值相等,当返回值为1时,说明前一项值比后一项值大

操做方法

  • concat

    获取当前数组的副本,并在这个副本末尾添加新元素,返回这个副本数组

  • slice

    返回当前数组的一个子序列数组,起始位置必须传入,结束位置是可选参数

  • splice

    操做数组中间的元素,能够实现删除、插入、替换三中操做。它必须传入起始位置、要删除的元素数量两个参数,插入或替换的内容是可选参数

迭代方法

迭代方法接受两个参数:

  1. 在每一项上运行的函数
  2. 第一个参数函数的执行环境的变量对象

传入的函数接受三个参数:

  1. 数组元素值
  2. 元素在数组中的索引
  3. 数组对象自己

缩小方法

reduce()reduceRight()方法,会迭代数组的全部项,而后构建一个最终返回的值。它接受一或两个参数:

  1. 在每一项上调用的函数
  2. 可选的初始值

被调用的函数接受四个参数:

  1. 前一个值
  2. 当前值
  3. 元素的索引
  4. 数组对象

第一次迭代发生在数组的第二项上,函数返回的任何值都会做为第一个参数自动传给下一项。

Date类型

var date = new Date()

当不传递参数时,新建立的对象自动得到当前日期和时间。若是想指定日期,则须要传入表示该日期的毫秒数。为了简化这一计算过程,ECMAScript提供了两个方法Date.parse()Date.UTC()将特定的日期转换为毫秒数,再经过Date构造函数建立新对象。

var time = new Date(Date.parse("May 25,2018"));
var time2 = new Date(Date.UTC(2018,10,13,23,22,10));

Function类型

定义函数有两种方式:

  • 函数声明

    function sum(arg1,arg2) {
      body //函数体
    }
  • 函数表达式

    var sum = function(args1,arg2) {
      body //函数体
    };

函数声明和函数表达式的差别是解析器读取时间不同。解析器在执行环境中加载数据时,会率先读取函数声明,并使其在执行任何代码前可用,这称为函数声明提高;至于函数表达式,则必须等到解析器执行到它所在的代码行,才会真正被解释执行。

函数内部属性arguments和this

  • arguments属性

    它的主要用途是保存函数参数。arguments对象的callee属性,是一个指针,指向拥有这个arguments对象的函数对象。

  • this

    this表示调用当前函数的对象。

apply、call、bind

这三个方法均可以指定this表示的对象,applycall方法会首先指定this表示的对象,而后再执行当前函数;bind方法会建立一个函数的实例,其this值会被绑定到指定的对象上,这个函数不会自动执行,必须再手动调用一次。

基本包装类型

var s1 = "some text";
var s2 = s1.substring(2);

当执行流访问到第二行时,首先建立String包装类型的一个实例,而后在实例上调用指定的方法,最后销毁这个实例。

引用类型与基本包装类型的主要区别就是对象的生存期。使用new操做符建立的引用类型的实例,在执行流离开当前做用域以前都一直保存在内存中。而自动建立的基本包装类型的对象,则只存在于一行代码的执行瞬间,而后当即销毁。这意味着咱们不能在运行时为基本类型值添加属性和方法。

单体内置对象

内置对象指由ECMAScript实现提供的、不依赖宿主环境的对象,这些对象在ECMAScript程序执行前就已经存在了。这意味着开发人员没必要显示地实例化内置对象,由于它们已经实例化了

在全部代码执行以前,做用域中就已经存在两个内置对象:GlobalMath。在大多数ECMAScript实现中都不能直接访问Global对象;不过,Web浏览器实现了承担该角色的windows对象。全局变量和函数都是Global对象的属性。

相关文章
相关标签/搜索