返回
JavaScript冷知识集锦二
前端
2024-02-22 22:43:20
前言
在上一篇文章中,我们分享了一些JavaScript冷知识。在这篇文章中,我们将继续分享一些冷知识,希望对大家有所帮助。
对象防篡改
我们可以通过Object.freeze()方法来防止对象被篡改。该方法将对象的所有属性设置为不可写,并且无法添加或删除任何属性。
const obj = {
name: 'John Doe',
age: 30
};
Object.freeze(obj);
obj.name = 'Jane Doe'; // TypeError: Cannot assign to read-only property 'name' of object '#<Object>'
obj.age = 31; // TypeError: Cannot assign to read-only property 'age' of object '#<Object>'
console.log(obj); // { name: 'John Doe', age: 30 }
判断对象是否可扩展
我们可以通过Object.isExtensible()方法来判断一个对象是否可扩展。如果一个对象是可扩展的,那么我们可以添加或删除它的属性。如果一个对象是不可扩展的,那么我们就不能添加或删除它的属性。
const obj1 = {};
console.log(Object.isExtensible(obj1)); // true
const obj2 = Object.freeze({});
console.log(Object.isExtensible(obj2)); // false
NaN的类型是数字
NaN是Not a Number的缩写,它表示一个不是数字的值。但是,NaN的类型是数字。我们可以通过typeof运算符来验证这一点。
console.log(typeof NaN); // "number"
数组快速拉平
我们可以使用Array.prototype.flat()方法来快速将一个多维数组拉平成一个一维数组。
const arr = [1, 2, [3, 4], [5, 6, [7, 8]]];
console.log(arr.flat()); // [1, 2, 3, 4, 5, 6, 7, 8]
JSON.stringify
JSON.stringify()方法可以将一个JavaScript对象转换为JSON字符串。该方法可以接受一个可选的第二个参数,该参数是一个函数,用于对对象中的每个属性进行转换。
const obj = {
name: 'John Doe',
age: 30
};
const json = JSON.stringify(obj, (key, value) => {
if (typeof value === 'number') {
return value.toString();
} else {
return value;
}
});
console.log(json); // "{\"name\":\"John Doe\",\"age\":\"30\"}"
结语
以上是5个JavaScript冷知识。希望大家能够学以致用,在实际开发中灵活运用。