Node.js 内置对象与方法详解

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

这个系列的其他文档

暂无评论

发送评论 编辑评论

|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇