1. Object:一般使用点语法存取,也可以使用中括号来存取属性
注意:在使用对象字面量表示对象时,并不会实际调用Object构造函数
2. Array:
注意:与对象一样,在使用数组字面量表示法创建数组不会掉用Array构造函数
2.1 from():用于将类数组结构,即任何可迭代的结构,或者有一个length属性和可索引元素的结构,转换为数组实例
//字符串转换为单字符数组
Array.from(‘Matt’) //[‘M’, ‘a’,’t’,’t’]
//将集合和映射转换为一个新数组
const m = new Map().set(1,2).set(3,4)
const s = new Set().add(1).add(2).add(3).add(4)
Array.from(m) //[[1,2], [3,4]]
Array.from(s) // [1,2,3,4]
//对数组进行浅复制
const a1 = [1,2,3,4]
const a2 = Array.from(a1)
console.log(a1) // [1,2,3,4]
console.log(a1 === a2) //false
// 可以使用任何可迭代对象 const iter = {
*[Symbol.iterator]() {
yield 1;
yield 2;
yield 3;
yield 4;
} };
console.log(Array.from(iter)); // [1, 2, 3, 4]
// arguments 对象可以被轻松地转换为数组 function getArgsArray() {
return Array.from(arguments);
}
console.log(getArgsArray(1, 2, 3, 4)); // [1, 2, 3, 4]
// from()也能转换带有必要属性的自定义对象 const arrayLikeObject = {
0: 1,
1: 2,
2: 3,
3: 4,
length: 4
};
console.log(Array.from(arrayLikeObject)); // [1, 2, 3, 4]
//Array.from()还接收第二个可选的映射函数参数
const a1 = [1, 2, 3, 4];
const a2 = Array.from(a1, x => x**2);
2.2 of():用于将一组参数转换为数组实例,旨在替代ES6之前的Array.prototype.slice.call(arguments)
console.log(Array.of(1,2,3,4)) //[1,2,3,4]
2.3 Array.isArray():确定一个值是否为数组
2.4 迭代器方法:keys(),values(),entries()
const a = [‘foo’, ‘bar’, ‘baz’]
// 因为这些方法都返回迭代器,所以可以将它们的内容
// 通过Array.from()直接转换为数组实例
const aKeys = Array.from(a.keys()); // [0, 1, 2, ]
const aValues = Array.from(a.values()); //[‘foo’, ‘bar’, ‘baz’]
const aEntries = Array.from(a.entries()); //[[0, ‘foo’], [1, ‘bar’], [2, ‘baz’]]
2.5 批量复制方法:copyWithin();填充数组方法:fill()
2.6 转换方法:toLocaleString(),toString(),valueOf()
2.7 连接方法:join()
2.8 栈方法:后进先出,最近添加的项最先被删除
push:接收任意数量的参数,并将它们添加到数组末尾,返回数组的最新长度
pop:用于删除数组的最后一项,同时减少数组的length,返回被删除的项
2.9队列方法:先进先出,末尾添加数据,从列表开头获取数据
shift:删除数组的第一项并返回它,然后数组长度减1
unshift:在数组开头添加任意多个值,然后返回新的数组长度
注意:shifit和push组合可以把数组当作队列来使用,unshift和pop组合可以在相反方向模拟队列
2.10 排序方法:
reverse: 将数组元素反向排列
sort:默认情况,在每一项调用String函数后决定顺序(即便都是数值),最小的在前,最大的在后;也可以传入比较函数
2.11 操作方法:
concat:默认情况下,将数组打平后,添加到副本数组的末尾,返回一个新数组
slice:返回开始索引到结束索引对应的所有元素
splice:参数顺序:开始位置,要删除元素的数量和要插入的任意多个元素,返回被删除的元素的数组(如果没有删除元素,则返回空数组)
2.12 搜索和位置方法:indexOf(),lastIndexOf(),includes(),都可接收两个参数:要查找的元素和一个可选的起始的搜索位置
2.13:断言函数:find(),findIndex()
2.14迭代方法:参数:以每一项为参数运行的函数,以及可选的作为函数运行上下文的作用域对象(影响函数中this的值)
every:每一项函数都返回true,则返回true
filter:函数返回true的项会组成数组后返回
forEach:没有返回值
map():返回由每次函数调用的结果构成的数组
some():如果有一项返回true,则返回true
2.15 归并方法:reduce():从第一项开始遍历到最后一项,reduceRight():与reduce()相反
3. 定型数组:目的是提升向原生库传输数据的效率
3.1 Float32Array:可以允许javascript运行时访问一块名为ArrayBuffer的预分配内存。JavaScript 运行时使用这个类型可以分配、读取和写入数组。 这个数组可以直接传给底层图形驱动程序 API,也可以直接从底层获取到
ArrayBuffer:ArrayBuffer 是所有定型数组及视图引用的基本单位。
ArrayBuffer():是一个普通的javascript构造函数,可用于在内存中分配特定数量的字节空间。一经创建,就不能再改变大小