Array
Array.flat()
flat()
方法会按照一个可指定的深度递归遍历数组,并将所有元素与遍历到的子数组中的元素合并为一个新数组返回。
const arr1 = [0, 1, 2, [3, 4]];
console.log(arr1.flat());
// [0, 1, 2, 3, 4]
const arr2 = [0, 1, 2, [[[3, 4]]]];
console.log(arr2.flat(2));
// [0, 1, 2, [3, 4]]
语法
var newArray = arr.flat([depth])
参数
-
depth
可选指定要提取嵌套数组的结构深度,默认值为 1。
返回值
一个包含将数组与子数组中所有元素的新数组。
Array.from()
Array.from()
方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。
console.log(Array.from('foo'));
// Array ["f", "o", "o"]
console.log(Array.from([1, 2, 3], x => x + x));
// Array [2, 4, 6]
语法
Array.from(arrayLike[, mapFn[, thisArg]])
参数
-
arrayLike
想要转换成数组的伪数组对象或可迭代对象。
-
mapFn
可选如果指定了该参数,新数组中的每个元素会执行该回调函数。
-
thisArg
可选可选参数,执行回调函数
mapFn
时this
对象。
返回值
一个新的数组
实例。
Object
Object.freeze()
Object.freeze()
方法可以冻结一个对象。一个被冻结的对象再也不能被修改;冻结了一个对象则不能向这个对象添加新的属性,不能删除已有属性,不能修改该对象已有属性的可枚举性、可配置性、可写性,以及不能修改已有属性的值。此外,冻结一个对象后该对象的原型也不能被修改。freeze()
返回和传入的参数相同的对象。
const obj = {
prop: 42
};
Object.freeze(obj);
obj.prop = 33;
// Throws an error in strict mode
console.log(obj.prop);
// 42
语法
Object.freeze(obj)
参数
-
obj
要被冻结的对象。
返回值
被冻结的对象。
Object.preventExtensions()
Object.preventExtensions()
方法让一个对象变的不可扩展,也就是永远不能再添加新的属性。
const object1 = {};
Object.preventExtensions(object1);
try {
Object.defineProperty(object1, 'property1', {
value: 42
});
} catch (e) {
console.log(e);
// TypeError: Cannot define property property1, object is not extensible
}
语法
Object.preventExtensions(obj)
参数
-
obj
将要变得不可扩展的对象。
返回值
已经不可扩展的对象。