JavaScript 内置对象全解析
JavaScript 内置对象全解析
JavaScript 提供丰富的内置对象,分为 基础包装对象、集合对象、工具对象 和 其他核心对象 四大类:
一、基础包装对象
1. String
字符串操作
const str = new String("Hello");
// 常用方法
str.includes("el"); // true(是否包含)
str.replace("H", "h"); // "hello"(替换)
str.split(""); // ["H","e","l","l","o"]
str.padEnd(10, "!"); // "Hello!!!!!"(填充)
2. Number
数值处理
const num = new Number(123.456);
// 静态方法
Number.isInteger(5.0); // true(是否整数)
Number.parseFloat("3.14"); // 3.14
// 实例方法
num.toFixed(2); // "123.46"(保留小数)
3. Boolean
布尔值封装
const bool = new Boolean(true);
console.log(bool.valueOf()); // true(原始值)
4. Symbol
(ES6)
唯一标识符
const sym = Symbol("key");
const obj = { [sym]: "secret" };
console.log(obj[sym]); // "secret"
5. BigInt
(ES2020)
大整数处理
const bigNum = BigInt(9007199254740991);
console.log(bigNum + 1n); // 9007199254740992n
二、集合对象
1. Array
数组操作
const arr = new Array(1, 2, 3);
// 变异方法
arr.push(4); // [1,2,3,4]
arr.splice(1, 1); // [1,3,4](删除索引1)
// 非变异方法
arr.map(x => x*2); // [2,6,8]
arr.filter(x => x>2); // [3,4]
2. Map
(ES6)
键值对集合(键可为任意类型)
const map = new Map();
map.set("name", "Alice"); // 添加
map.get("name"); // "Alice"
map.has("age"); // false
3. Set
(ES6)
唯一值集合
const set = new Set([1, 2, 2, 3]);
set.add(4); // {1,2,3,4}
set.has(3); // true
set.delete(1); // {2,3,4}
4. WeakMap
/WeakSet
弱引用集合(避免内存泄漏)
const wm = new WeakMap();
const obj = {};
wm.set(obj, "data"); // 键必须是对象
三、工具对象
1. Math
数学计算
Math.PI; // 3.1415926535
Math.random(); // 0~1随机数
Math.floor(3.7); // 3(向下取整)
Math.max(1, 5, 3); // 5
2. Date
日期时间处理
const now = new Date();
now.getFullYear(); // 2025
now.toISOString(); // "2025-06-05T12:00:00.000Z"
new Date("2025-01-01").getDay(); // 3(星期三)
3. JSON
JSON 数据转换
const obj = { name: "Bob", age: 30 };
JSON.stringify(obj); // '{"name":"Bob","age":30}'
JSON.parse('{"x":5}'); // { x: 5 }
4. RegExp
正则表达式
const regex = new RegExp("\\d+", "g");
"ID: 123".match(regex); // ["123"]
regex.test("No numbers"); // false
四、其他核心对象
1. Object
对象基础操作
Object.keys({a:1, b:2}); // ["a","b"]
Object.assign({}, {x:1}); // {x:1}(合并对象)
Object.freeze(obj); // 冻结对象防修改
2. Function
函数构造器
const sum = new Function("a", "b", "return a + b");
sum(2, 3); // 5
3. Promise
(ES6)
异步操作管理
new Promise((resolve, reject) => {setTimeout(() => resolve("Done"), 1000);
}).then(result => console.log(result)); // "Done"
4. Error
错误处理
try {throw new TypeError("类型错误");
} catch (e) {console.log(e.message); // "类型错误"
}
五、全局对象方法(浏览器:window
/ Node.js:global
)
方法 | 用途 | 示例 |
---|---|---|
parseInt() | 字符串转整数 | parseInt("10px") // 10 |
parseFloat() | 字符串转浮点数 | parseFloat("3.14em") // 3.14 |
isNaN() | 检测 NaN | isNaN("text") // true |
isFinite() | 检测有限数 | isFinite(1/0) // false |
eval() | 执行字符串代码 | eval("2+2") // 4 (慎用) |
🧠 内置对象关系图
⚠️ 使用注意事项
-
避免
new
基本类型// 不推荐 const str = new String("text"); // 推荐 const str = "text";
-
数组检测用
Array.isArray()
Array.isArray([]); // true typeof []; // "object"(不准确)
-
Map vs Object
特性 Map
Object
键类型 任意类型 String/Symbol 顺序 插入顺序 无序 大小 .size
属性手动计算
💡 核心原则:根据场景选择最优内置对象,如频繁增删键值用
Map
,数学计算用Math
,日期处理用Date
。