集合引用类型
大多数的对象引用类型使用的是Object类型。如果Object的对象引用类型的属性未数值的话,那么会自动转换成字符串
Array
数组可以使用Array的构造函数创建数组,构造函数的参数表示的就是数组的长度。
Array的构造函数还有两个ES6新增的用于创建数组的静态方法,from和of.from是将类数组转换成数组,而of是将一组参数转换成数组
Array.from的第一个参数是一个类数组都西昂,即任何可迭代的结构与,或者有一个length属性和可索引的结构。如 字符串,set集合 数组的浅复制,迭代器对象。第二个参数可以接受一个可选的映射函数参数。这个参数直接增强新数组的参数。第三个可选参数,用于指定映射函数中this的指向,但是这个函数在箭头函数中不适用
数组索引
要取得或设置数组的只,需要是使用[]并提供相应值的索引。数组的length属性是可以修改的,页就是说可以但是设置数组的属性,如果设置的值大于数组的长度,那么会使用空占位符,如果小于数组的长度,那么会删除掉多余的值
检测数组
检测数组使用的是instanceof方法检测是否是数组
迭代器方法
ES6中,Array的原型上暴露了3个用于检索数组内容的方法:keys(),values()和entries()。keys()返回数组索引的迭代器。value()返回数组元素的迭代器。entries返回索引/值的迭代器
复制和填空方法
ES6新增了两个方法:批量复制方法copyWithin(),以及填充方法fill().fill方法可以向一个已有的数组中插入全部或者部分相同的值,开始索引用于指定开始填充位置,如果不提供结束索引,则直接到最后
copyWith()会按照指定范围浅复制数组中的部分值,然后插入到指定索引开始的位置
栈方法
ES6中提供push和pop分别表示在末尾添加元素和删除末尾元素。push方法的返回值是数组的长度,pop返回的是删除的元素
队列方法、
ES6提供shift方法和unshift方法。shift表示删除头部第一项,unshift表示向头部添加元素
排序方法
数组中有sort和reverse()方法表示数组排序。sort一般为函数表达式,reverse表示将数组倒序
操作方法
数组有很多操作方法,比如concat方法可以在现有数组的全部元素的基础上创建一个新的数组。相当于浅复制。concat方法是受symbol.isConcatSpreadable迭代器控制。如果为true,则表示打平,false,表示不打平。slice方法用于创建一个包含原来数组一个或者多个元素的新数组,相当于浅复制。slice第一个参数表示索引开始的位置,第二个参数是可选参数,如果没有传,则表示到最后,第二个参数表示结束位置,是一个开区间。splice是数组中强大的方法,可以实现删除,插入,替换。删除的画,只需要传递两个参数,第一个参数表示开始删除的位置,第二个参数表示删除元素的个数。插入需要传递三个参数,第一个参数表示插入的位置,第二个参数为0,第三个参数为插入的元素。替换需要三个参数,第一个参数表示删除的位置,第二个参数表示删除的个数,第三个参数表示替换的元素
索引和位置
严格相等indexof() lastIndexof()和includes().前面两个都可以使用,后面需要在es7中使用。断言函数find()函数和findIndex()函数,表示匹配元素相等,findIndex()表示相等元素的位置
迭代函数
every()表示数组中的每一项都满足才返回true
filter()返回满足条件的元素
forEach:遍历数组
map:返回每次函数的回调值
som:如果有一项满足则返回true
reduce
reduce和reduceRight这两个方法都会迭代数组的所有向,第一个是一个函数,第二个数返回的初始值。
Arraybuffer
ArrayBuffer是定性数组,其实就是一个试图。定性数组的目的主要是为了和webgl进行通讯。Arraybuffer是所有定型数组及视图引用的基本单位。
Arraybufer和Array之间的区别
1.Arraybuffer数组类型必须统一
- Arraybuffer的长度不能发生变化,但是可以使用set方法改变指定位置的值
- Arraybuffer使用subArray浅复制
4 数组有Byte_per_Element属性,返回Arraybuffer单个字节的大小
弱键
弱键的可以解决强健和真实DOM的引用,DOM消失,因为强键的存在,DOM不会被垃圾回收掉。传统的对象只能使用字符串,数字,symbol作为对象的属性,弱键可以使用任何类型都可以使用,weakMap还可以实现对象私有化。