引用类型的值是引用类型的一个实例。
函数传递多个参数时候可以使用对象定义。这样更加灵活。

数组

数组的length属性很有特点,它不是只读的。 通过设置这个属性,可以从数组的末尾移除项活向数组中添加新项。
instanceof操作符可以判断变量是不是数组,但是在多个框架,不同全局执行环境下可能表现不一致。
为了解决这个问题,es5新增了Array.isArray()

数组在toString时候会调用每一项的toString

sort默认按照升序排列数组项, 调用每个数组项的toString()方法,比较排序。

数组的迭代方法

every some map filter forEach

数组的归并方法

reduce ,redeceRight
reduce从第一项开始遍历, redeceRight从最后一项开始。
都接收两个参数,第一个是每一项上都会调用的函数,第二个是初始值。

每次的返回值都会作为前一项出现在下次执行过程中

  1. [1,2,3,4].reduce((prev, next, index, arr)=> return prev+next;)

第一次执行 prve是1 next是2 执行1+2
第二次执行是prev 3 next 3依次类推

Date类型

Data.parse() 接收一个表示日期的字符串参数。
这个返回值和地区有关系。
new Date() 传入一个字符串的话在后台默认也是调用的这个

Date.now() 调用时候的毫秒数
Date类型也重写了原型上的一些方法。
toLocaleString() toString() valueOf()
toLocaleString会根据浏览器设置返回相应的地区时间

  1. new Date().toLocaleString()
  2. "2019/11/13 下午11:46:48"

Function

Ecmascript中的函数是对象,因此函数也有属性和方法。每个函数都包含有两个属性:length 和 prototype。
length是函数接收到的参数个数。
最神奇的是prototype属性。对于Ecmascript中的引用类型而言。 prototype是保存它们所有实例方法的真正所在。
在es5中,prototype是不可枚举的。
每个函数都包含两个非继承而来的方案,call apply

call和apply真正强大的作用是可以降低代码的耦合