本文发表于 227 天前,其中的信息可能已经事过境迁
深拷贝 (ES6)
在现代浏览器中,可以使用 structuredClone
方法来实现深拷贝,它是一种更高效、更安全的深拷贝方式。
js
const original = {
a: 1,
b: [1, 2, 3],
c: new Map([
[1, "one"],
[2, "two"],
]),
};
const cloned = structuredClone(original);
console.log(cloned); // 输出克隆后的对象
记录一段代码运行所花时间
js
console.time("计时器");
for (let i = 0; i < 1000; i++) {
console.log(i);
}
console.timeEnd("计时器");
快速去除数组中的 undefined 和 null
filter(Boolean)
js
const arr = [1, 2, undefined, 3, null, 4];
const filteredArr = arr.filter(Boolean);
console.log(filteredArr); // 输出 [1, 2, 3, 4]
文档注释
在写函数时,可以使用文档注释来描述函数的功能和参数。
js
/**
* 这是一个函数
* @author 兜兜里有糖
* @param {number} num 第一个参数为数字
* @return {void} 没有返回值
* @example
* jian(10); // 输出10 - 0
*/
function jian(num) {
console.log(num);
if (num === 0) return;
num--;
jian(num);
}
jian(num);
快捷字符串转数字
js
let string = "2";
console.log(+string); // 2
ForOf中使用两个参数
js
let data = [1, 2, 3];
for (const [item, index] of data.entries()) {
console.log(item, index);
}
// entries 将数组转换为可迭代对象
可选链式操作符
js
const obj = {};
console.log(obj.name ?? 2); // 输出2
let obj2 = {
name: "兜兜",
};
console.log(obj2.name ?? 2); // 输出 兜兜
console.log(obj2.name?.children); // 输出 undefined
console.log(obj2.name?.children ?? 2); // 输出2
访问数组末尾的元素
at
支持负数索引
js
let arr = [1, 2, 3];
console.log(arr[-1]); // undefined
console.log(arr.at(-1)); // 输出 3
快速从一个对象中剔除某些属性
通过解构可以快速剔除对象中某些属性
js
const obj = {
name: "兜兜",
age: 18,
sex: "男",
address: "河南",
};
// 剔除age和address
const { age, address, ...newObj } = obj;
console.log(newObj); // 输出 {age: 18, address: '河南'}
快速合并数组嵌套列表
通过flat
方法可以快速合并数组嵌套列表
js
const arr = [1, [2, [3, [4, [5]]]]];
console.log(arr.flat(Infinity)); // 输出 [1, 2, 3, 4, 5]
封装可链式调用函数/类
js
class Chainable {
constructor(value) {
this.value = value;
}
a() {
this.value += "A";
return this;
}
b() {
this.value += "B";
return this;
}
}
console.log(new Chainable(1).a().b()); // 1AB
封装创建单例类函数
该函数用于创建单例类,确保同一个类只有一个实例。
js
function singleton(className) {
let ins = null;
return new Proxy(className, {
construct(target, args) {
if (!ins) {
ins = new target(...args);
}
return ins;
},
});
}
控制台
在控制台(DevTools)中,可以通过不同的方法来获取我们想要的内容。
获取当前高亮元素属性
可以通过 console.dir($0)
来获取当前选中的元素属性。
其中 $0
是当前选中的元素,可以通过 $1
$2
$3
$4
来获取之前选中的元素。
打印对象/数组结构
console.table(obj)
可以打印对象/数组结构。 这样打印出来的内容更加清晰,适合打印对象/数组结构。
在控制台(DevTools)中,可以通过 console.table(obj)
来打印对象/数组结构。
打印当前函数堆栈
console.trace()
可以打印当前函数堆栈。
可看到当前函数调用链,非常适合查事件触发源头。
js
function a() {
b();
}
function b() {
c();
}
function c() {
d();
}
function d() {
e();
}
function e() {
console.trace(); // 输出当前函数堆栈
}
a();
评论 隐私政策