当前位置: 首页 > news >正文

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()检测 NaNisNaN("text") // true
isFinite()检测有限数isFinite(1/0) // false
eval()执行字符串代码eval("2+2") // 4(慎用)

🧠 内置对象关系图

Object
Function
Array
Date
RegExp
Error
Promise
TypedArray
Map
Set
Math
JSON

⚠️ 使用注意事项

  1. 避免 new 基本类型

    // 不推荐
    const str = new String("text");
    // 推荐
    const str = "text";
    
  2. 数组检测用 Array.isArray()

    Array.isArray([]); // true
    typeof [];         // "object"(不准确)
    
  3. Map vs Object

    特性MapObject
    键类型任意类型String/Symbol
    顺序插入顺序无序
    大小.size属性手动计算

💡 核心原则:根据场景选择最优内置对象,如频繁增删键值用 Map,数学计算用 Math,日期处理用 Date

相关文章:

  • TM中,return new TransactionManagerImpl(raf, fc);为什么返回是new了一个新的实例
  • 《从函数模板到类模板:OP泛型编程进化论》
  • Python项目的构建和部署方案推荐
  • QTreeWidget 应用场景与用法详解
  • Docker部署SpringBoot项目
  • 6月8日python-AI代码
  • 面向对象之 继承中的成员访问特点
  • TCP相关问题 第一篇
  • 鸿蒙的一些布局
  • 深入剖析JVM垃圾回收,高并发场景JVM性能调优,内存泄露分析,以及如何避免OOM
  • 8个AI软件介绍及其工作原理讲解
  • Day 21
  • Hilt在android项目中使用的注解说明
  • MS8911S/8921S/8922M/8931S 是一款具有内部迟滞的高速比较器
  • MCP是啥?技术原理是什么?Windows系统配置MCP,Cursor使用MCP
  • Selenium4+Python的web自动化测试框架
  • 职位竞聘BA商业推理测评管理人员TAS倍智题库天翼云益丰等企业
  • 轻量级数学竖式训练方案解析
  • 并发和并行
  • 操作系统期末版
  • 朝阳区网站开发公司/各大网站收录提交入口
  • node做网站后台/qq推广官网
  • 做网站的财务会涉及到的科目/网站推广seo是什么
  • 邢台做网站推广价格/南宁seo外包靠谱吗
  • 政府网站专题栏目建设/网络营销知识
  • 南京建站公司/教育培训网页设计