Object
显示的创建Object的实例方法:
- new操作符和Object构造函数
let person = new Object(); person.name = 'Jason'; person.age = 42
- 对象字面量
let person = { name:'Jason', age:42}
存取属性的方法一般有两种:点语法和中括号。
let person = { name:'Jason', age:42}; console.log(person.name); console.log(person['name']);
从功能上讲两种存取属性的方法没有区别,使用中括号的主要优势就是可以通过变量访问属性。
let propertyName = "name"; console.log(person[propertyName]); // "Jason"
Array
创建数组的方法:
- Array构造函数创建
let colors = new Array();
- 数组字面量表示法
let colors = ['red','blue','pink']
- Array.from(),第一个参数是一个类数组对象,即任何可迭代的结构,或者有一个length属性和可索引元素的结构。
console.log(Array.from("Matt")); // ["M", "a", "t", "t"] // 可以使用 from()将集合和映射转换为一个新数组 const m = new Map().set(1, 2) .set(3, 4); const s = new Set().add(1) .add(2) .add(3) .add(4); console.log(Array.from(m)); // [[1, 2], [3, 4]] console.log(Array.from(s)); // [1, 2, 3, 4] // Array.from()对现有数组执行浅复制 const a1 = [1, 2, 3, 4]; const a2 = Array.from(a1); console.log(a1); // [1, 2, 3, 4] alert(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()还接收第二个可选的映射函数参数。这个函数可以直接增强新数组的值,而无须像调用 Array.from().map()那样先创建一个中间数组。还可以接收第三个可选参数,用于指定映射函数中 this 的值。但这个重写的 this 值在箭头函数中不适用。const a1 = [1, 2, 3, 4]; const a2 = Array.from(a1, x => x**2); const a3 = Array.from(a1, function(x) {return x**this.exponent}, {exponent: 2}); console.log(a2); // [1, 4, 9, 16] console.log(a3); // [1, 4, 9, 16]
- Array.of()可以把一组参数转换为数组
检索数组内容的方法:
- keys(),返回数组索引的迭代器
- values(),返回数组元素的迭代器
- entries(),返回索引/值对的迭代器
const a = ["foo", "bar", "baz", "qux"]; // 因为这些方法都返回迭代器,所以可以将它们的内容 // 通过 Array.from()直接转换为数组实例 const aKeys = Array