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

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

http://www.xdnf.cn/news/12845.html

相关文章:

  • QRadioButton(续)+ CheckBox + QLabel(2)
  • 【Go语言基础【20】】Go的包与工程
  • c#,Powershell,mmsys.cpl,使用Win32 API展示音频设备属性对话框
  • JavaWeb预习(jdbc)
  • 拼多多官方内部版 7.58.0 | 极限精简,只有2.5M
  • 【笔记】Poetry虚拟环境创建示例
  • Prompt Tuning(提示调优)到底训练优化的什么部位
  • DiscuzX3.5发帖json api
  • maven 1.0.0idea的使用说明
  • Vue3学习(watchEffect,标签的ref属性,计数器,defineExpose)
  • SpringCloud学习笔记-4
  • 实验二:数码管动态显示实验
  • 建造者模式深度解析与实战应用
  • WEB3技术重要吗,还是可有可无?
  • STM32入门学习之系统时钟配置
  • K8S认证|CKS题库+答案| 7. Dockerfile 检测
  • 五、jmeter脚本参数化
  • PHP中如何定义常量以及常量和变量的主要区别
  • Spark流水线+Gravitino+Marquez数据血缘采集
  • java综合项目开发一课一得
  • 使用 Melos 高效管理 Flutter/Dart Monorepo 项目
  • 用 Melos 解决 Flutter Monorepo 的依赖冲突:一个真实案例
  • Python 包管理器 uv 介绍
  • 基于PostGIS的各地级市路网长度统计及Echarts图表可视化实践-以湖南省为例
  • 支持selenium的chrome driver更新到137.0.7151.68
  • 时序数据库IoTDB结合SeaTunnel实现高效数据同步
  • 七、Sqoop Job:简化与自动化数据迁移任务及免密执行
  • Ubuntu20.04中 Redis 的安装和配置
  • 通过Cline使用智能体
  • webpack其余配置