Array.from(obj[, mapFn, thisArg])
可选的第二个参数 mapFn 可以是一个函数,该函数会在对象中的元素被添加到数组前,被应用于每个元素,此外 thisArg 允许我们为该函数设置 this。
// 假设 range 来自上文例子中
// 求每个数的平方
let arr = Array.from(range, num => num * num);
alert(arr); // 1,4,9,16,25
Array.from 依赖于字符串的可迭代特性
也可以像 for...of 一样正确处理代理对(UTF-16 扩展字符)
Array.from 使用 for...of 来实现:
let str = '𝒳😂';
let chars = []; // Array.from 内部执行相同的循环
for (let char of str) {
chars.push(char);
}
alert(chars);
Object.keys/values/entries 会忽略 symbol 属性
就像
for..in循环一样,这些方法会忽略使用Symbol(...)作为键的属性。通常这很方便。但是,如果我们也想要 Symbol 类型的键,那么这儿有一个单独的方法 Object.getOwnPropertySymbols,它会返回一个只包含 Symbol 类型的键的数组。另外,还有一种方法 Reflect.ownKeys(obj),它会返回 所有 键。