Node.js 的「内置函数」层 = 全局函数 + 内建对象(Object/Array/String/Number/Math/JSON/Promise/Date 等)上的静态方法与实例方法。这些不 import 就能用,是日常编码最高频的一块。
1. Object 静态方法 – 键值操作与转换
描述
Object.keys/values/entries 取集合,assign 浅合并,fromEntries 反向构造,freeze 冻结,create 指定原型。
语法和示例
const obj = { a: 1, b: 2 };
Object.keys(obj); // ['a','b']
Object.values(obj); // [1,2]
Object.entries(obj); // [['a',1],['b',2]]
Object.fromEntries([['x',1]]); // {x:1}
Object.assign({}, a, b); // 浅合并(改前者)
Object.freeze(obj); // 冻结(浅)
Object.hasOwn(obj, 'a'); // 3.10+ 替代 hasOwnProperty
Object.getPrototypeOf(obj);
Object.defineProperty(obj, 'k', { value: 1, enumerable: false });
// {...a, ...b} 是 assign 的语法糖注意事项
- j
- s
2. Array 实例方法 – 遍历与变换
描述
map/filter/reduce/find/some/every/flat/flatMap 等。全部不改变原数组(除 splice/sort/reverse 外)。
语法和示例
const xs = [1, 2, 3, 4];
xs.map(x => x * 2); // [2,4,6,8]
xs.filter(x => x % 2 === 0); // [2,4]
xs.reduce((a, x) => a + x, 0); // 10
xs.find(x => x > 2); // 3
xs.findIndex(x => x > 2); // 2
xs.some(x => x > 3); // true
xs.every(x => x > 0); // true
[[1,[2]], [3]].flat(2); // [1,2,3]
xs.flatMap(x => [x, x]); // [1,1,2,2,3,3,4,4]
xs.at(-1); // 4(负索引)
xs.toSorted((a,b)=>a-b); // 不改原数组的排序
xs.with(0, 9); // 替换某位(不改原)
// 分组(reduce 实现)
const group = xs.reduce((acc, x) => {
(acc[x.k] ??= []).push(x); return acc;
}, {});
// 扁平化并去重
const uniq = [...new Set(xs.flat(Infinity))];
注意事项
- j
- s
3. Array 静态方法与批量构造
描述
Array.from 从类数组/可迭代构造,Array.isArray 判断,Array.of 避免单数字陷阱。
语法和示例
Array.from('abc'); // ['a','b','c']
Array.from({length: 3}, (_, i) => i); // [0,1,2]
Array.from(new Set([1,2])); // [1,2]
Array.isArray([]); // true
Array.of(3); // [3](对比 new Array(3) 是空洞)
new Array(3).fill(0); // [0,0,0]
Array.from({length: n}, () => 0); // 更推荐注意事项
- j
- s
4. String 方法与模板
描述
trim/padStart/split/replaceAll/startsWith/at 等。字符串不可变,所有方法返回新串。
语法和示例
' x '.trim(); // 'x'
'5'.padStart(3, '0'); // '005'
'a,b,c'.split(','); // ['a','b','c']
'a-b-c'.replaceAll('-', '_'); // 'a_b_c'
'hello'.startsWith('he');
'hello'.includes('ell');
'hello'.at(-1); // 'o'
'中文'.length; // 2
'A'.repeat(3); // 'AAA'
String.raw`C:\new`; // 保留反斜杠注意事项
- j
- s
5. Number / parseInt / Number.isXxx
描述
数值判断与转换。parseInt 宽松解析,Number() 严格转换,isInteger/isSafeInteger 精确判断。
语法和示例
Number('42'); // 42
Number('') // 0(陷阱)
parseInt('42px', 10); // 42(宽松)
parseInt('08', 10); // 8
Number.isInteger(1.0); // true
Number.isSafeInteger(2**53); // false
Number.MAX_SAFE_INTEGER;
Number.parseFloat('3.14x'); // 3.14
(0.1 + 0.2).toFixed(2); // '0.30'(字符串)注意事项
- j
- s
6. Math 常用函数
描述
abs/round/floor/ceil/max/min/random 与 ES6 的 trunc/sign/cbrt/log2 等。round 是 .5 向上。
语法和示例
Math.abs(-3); Math.max(1,2,3); Math.min([...xs]);
Math.floor(1.9); Math.ceil(1.1); Math.round(1.5); // 2
Math.round(-1.5); // -1(向 +∞)
Math.trunc(-1.9); // -1(截断)
Math.sign(-5); // -1
Math.random(); // [0,1)
Math.floor(Math.random() * 10); // 0-9
Math.clamp?.(0, 0, 1); // 提案中注意事项
- j
- s
7. JSON.parse / JSON.stringify
描述
序列化与反序列化。支持 replacer/reviver 做字段过滤与类型还原,space 做美化。
语法和示例
JSON.stringify({a:1}, null, 2); // 美化
JSON.stringify(obj, ['a','b']); // 只保留指定键
JSON.stringify(obj, (k, v) => v);
JSON.parse('{"d":"2026-10-30"}',
(k, v) => k === 'd' ? new Date(v) : v);
JSON.parse('{}', null);注意事项
- j
- s
8. Promise 静态方法
描述
all/allSettled/race/any/resolve/reject/withResolvers。组合并发逻辑的核心。
语法和示例
await Promise.all([a(), b()]); // 全成才成
await Promise.allSettled([a(), b()]); // 各自结果
await Promise.race([task(), timeout()]);// 先完成
await Promise.any([m1(), m2()]); // 先成功
Promise.resolve(1).then(console.log);
const { promise, resolve, reject } = Promise.withResolvers(); // ES2024注意事项
- j
- s
9. Date 与时间处理
描述
Date 是可变对象,月份从 0 开始。现代项目建议用 Temporal(提案)或 dayjs/date-fns。
语法和示例
new Date(); // 当前
new Date('2026-10-30T10:00:00Z'); // ISO 解析
new Date(2026, 9, 30); // 月份从 0!9 = 十月
d.getTime(); // 毫秒时间戳
Date.now(); // 当前时间戳
d.toISOString(); // UTC ISO 串
d.getFullYear(); d.getMonth(); d.getDate();
new Date(d.getTime() + 86400000); // 加一天注意事项
- j
- s
10. 全局函数与工具
描述
setTimeout/setInterval、structuredClone、queueMicrotask、isNaN、encodeURIComponent 等无需 import 的能力。
语法和示例
setTimeout(fn, 0); clearTimeout(id);
structuredClone(obj); // 深拷贝(支持 Map/Set/Date)
queueMicrotask(() => {});
isNaN(NaN); Number.isNaN(NaN); // 后者更严格
encodeURIComponent('中文 a'); // 查询串用
decodeURIComponent(s);
parseFloat('3.14abc'); // 3.14
globalThis === global; // 统一全局对象注意事项
- j
- s
这个系列的其他文档
- Node.js 与 JavaScript 语言特性详解——JS 语言特性
- Node.js 内置模块详解——内置模块
- 完整学习路线——按顺序学完这个系列
- 返回 Node.js 总览——本语言三层字典的入口页