一文吃透 JavaScript 内置对象|JS 核心内置对象全解

发布时间:2026/9/14 22:14:39

一文吃透 JavaScript 内置对象|JS 核心内置对象全解 JavaScript 分为三大组成部分ECMAScript核心语法、BOM、DOM。 而内置对象是 ECMAScript 提供的原生封装好的工具对象不需要我们手动创建类浏览器 / JS 引擎直接提供开箱即用内置大量属性、方法处理数字、字符串、数组、日期、正则等业务场景。很多前端开发者只会简单调用split()、push()但对以下核心问题一知半解面试极易丢分内置对象分为几大类引用类型与基本包装对象区别是什么String/Number/Boolean 包装对象底层原理自动装箱拆箱流程Math、Date、Array、RegExp 高频方法实战场景全局内置对象 JSON、Object 的底层特性内置对象常见踩坑、隐式转换 Bug、面试高频考题。本文系统性梳理 JS 全部常用内置对象分分类、附完整可运行代码、底层原理、业务场景、避坑指南、面试真题看完彻底搞定 JS 内置对象所有知识点兼顾开发实用性与面试深度。二、JS 内置对象整体分类JS 内置对象统一分为三大类清晰区分避免混淆2.1 基本包装类型原始值包装对象专门包装简单基本数据类型string/number/boolean原始值本身不是对象调用方法时 JS 自动临时包装成对象执行完立即销毁。 包含String、Number、Boolean2.2 单例内置对象无需 new直接调用静态方法全局唯一对象不需要实例化直接使用对象名调用属性 / 方法 包含Math、JSON、Globalwindow2.3 引用类型内置对象需要 new 实例化复杂数据类型存储在堆内存拥有实例方法可创建多个独立实例 包含Array、Date、RegExp、Object三、第一类基本包装对象String / Number / Boolean3.1 底层核心自动装箱与拆箱原始字符串let str abc本身是基础类型没有方法当执行str.length时引擎自动执行三步装箱临时创建new String(abc)包装对象调用对应属性 / 方法获取结果拆箱销毁临时包装对象回归原始值。代码验证javascript运行let str 前端开发; str.test 100; console.log(str.test); // undefined // 原因方法执行完临时包装对象立即销毁新增属性无法保存3.2 String 字符串内置对象开发最高频常用实例方法业务实战javascript运行let s Hello JavaScript; // 1. 获取字符 console.log(s.charAt(0)); // H console.log(s[0]); // H // 2. 截取字符串 slice/substr/substring console.log(s.slice(0,5)); // Hello // 3. 查找索引 console.log(s.indexOf(Java)); // 6 console.log(s.includes(JS)); // false // 4. 分割、替换、大小写转换 let arr s.split( ); // [Hello,JavaScript] let upper s.toUpperCase(); let replaceStr s.replace(JavaScript,Vue); // 5. 去除空格 let trimStr 前端 .trim();面试易错点slice支持负数索引substring负数自动置 0substr第二个参数代表长度ES 废弃不推荐。3.3 Number 数字内置对象用于数值格式化、精度处理、数值判断javascript运行let num 3.1415926; // 保留小数 console.log(num.toFixed(2)); // 3.14 注意返回字符串 // 极值静态属性 console.log(Number.MAX_VALUE); console.log(Number.MIN_VALUE); console.log(Number.isNaN(NaN)); // true console.log(Number.isInteger(12.0)); // true3.4 Boolean 布尔包装对象极少主动使用仅自动装箱时隐式创建不推荐手动 newjavascript运行let flag new Boolean(false); console.log(flag ? 真 : 假); // 输出真 // 坑所有对象在布尔判断中都为true哪怕包装false四、第二类单例全局内置对象Math / JSON / Global4.1 Math 数学对象静态方法无需 new无构造函数全部为静态属性与静态方法处理数学计算javascript运行// 常用属性 Math.PI // 圆周率 Math.E // 取整 Math.floor(3.9) // 向下取整3 Math.ceil(3.1) // 向上取整4 Math.round(3.5) // 四舍五入4 // 随机数 0 ~ 1 左闭右开 let random Math.random(); // 封装生成min-max随机整数 function getRandom(min,max){ return Math.floor(Math.random()*(max-min1)) min; } // 最值 Math.max(1,5,9); Math.min(2,7,1);实战场景抽奖随机数、分页计算、图表数值处理。4.2 JSON 对象数据序列化核心两大核心静态方法前后端数据交互必备JSON.stringify()对象转 JSON 字符串JSON.parse()JSON 字符串转回 JS 对象javascript运行let user {name:小明,age:18}; // 对象转字符串 let jsonStr JSON.stringify(user); // 字符串还原对象 let obj JSON.parse(jsonStr);高频坑点无法转换函数、undefined、SymbolDate 类型序列化后变为字符串还原不会自动变回 Date 对象循环引用对象会直接报错。4.3 Global 全局对象浏览器为 window全局所有内置函数都挂载在 Global 上parseInt、parseFloat、isNaN、eval浏览器中全局对象等价于windowNode 中为globalThis。五、第三类可实例化引用内置对象5.1 Array 数组内置对象开发高频数组是 JS 内置引用对象提供遍历、增删、过滤、映射全套 API1增删改查方法javascript运行let arr [1,2,3]; arr.push(4); // 尾部添加 arr.pop(); // 尾部删除 arr.unshift(0); // 头部添加 arr.shift(); // 头部删除 arr.splice(1,1,99); // 指定位置删除/插入2遍历转换高阶方法ES6 必备javascript运行let list [10,20,30]; // map映射返回新数组 let double list.map(item item*2); // filter过滤筛选 let filterArr list.filter(item item 15); // reduce累加、数组求和、转对象 let sum list.reduce((total,item) totalitem, 0); // forEach单纯遍历无返回值 list.forEach(itemconsole.log(item));3查询与去重javascript运行list.includes(20) list.find(itemitem20) list.findIndex(itemitem20) // 数组去重 let unique [...new Set(list)];5.2 Date 日期内置对象时间处理处理时间戳、格式化、倒计时、时区javascript运行// 当前时间 let now new Date(); // 指定时间戳创建 let target new Date(1788888888000); // 获取年月日时分秒 now.getFullYear(); now.getMonth(); // 0~11 0代表一月 now.getDate(); now.getHours(); // 时间戳两种获取方式 Date.now(); new Date(); // 简单格式化封装 function formatDate(){ let d new Date(); let y d.getFullYear(); let m d.getMonth()1; let day d.getDate(); return ${y}-${m}-${day}; }常见业务订单创建时间、倒计时、活动有效期判断。5.3 RegExp 正则内置对象两种创建方式匹配、替换、表单校验手机号 / 邮箱javascript运行// 字面量创建推荐 let reg /^\d{11}$/; // new实例创建 let reg2 new RegExp(^\\d{11}$); let phone 13800138000; console.log(reg.test(phone)); // true 校验手机号 // 全局替换 let str a1b2c3; let res str.replace(/\d/g,*);业务场景表单验证、敏感词过滤、字符串提取数字。5.4 Object 基础根内置对象所有引用类型顶层父类提供静态工具方法javascript运行let person {name:小红}; // 获取键、值、键值对 Object.keys(person); Object.values(person); Object.entries(person); // 对象合并 let newObj Object.assign({},person,{age:20}); // 判断是否自有属性 person.hasOwnProperty(name);六、内置对象核心底层区别基本类型 vs 包装对象表格对比维度原始基本值 (string/number)new String 包装对象存储位置栈内存堆内存typeof 检测string / numberobject新增属性无法持久保存可以自定义属性布尔判断/0/false 为假所有对象恒为 true使用推荐开发中全部使用原始值禁止手动 new 创建七、开发高频踩坑总结避坑必看Boolean 包装对象陷阱new Boolean (false) 在 if 判断中恒为 trueNumber.toFixed 返回字符串直接参与加减运算会出现拼接错误字符串方法不会修改原字符串全部返回新字符串Array 中 splice 修改原数组slice/map/filter 返回新数组JSON 序列化丢失函数、undefined、循环引用报错Date.getMonth 月份从 0 开始忘记 1 导致日期错误Math.random 取不到 1生成随机数注意区间边界自动装箱临时对象用完销毁不要给原始值添加自定义属性。八、全文总结JS 内置对象是引擎原生提供工具不用自行封装覆盖字符串、数字、数组、时间、正则、数学计算全场景基本包装对象存在自动装箱拆箱机制开发中尽量使用原始值避免手动 newMath、JSON 属于单例对象直接静态调用Array/Date/RegExp 需要 new 创建实例每种内置对象都有专属业务场景熟练掌握内置 API 可以大幅简化代码内置对象底层特性、隐式转换、边界坑是前端笔试面试高频考点开发时避开文中总结陷阱。
延伸阅读

更多相关文章

2026/9/14 13:45:54

多AGV协同路径规划:时间窗模型原理与C++工程实现

1. 项目概述与核心价值 最近在做一个AGV(自动导引运输车)集群调度系统的仿真项目,其中路径规划模块是整个系统的核心。在实际的仓储或生产车间里,AGV不是孤立的,它们共享通道、路口等资源,如果规划不当&…

2026/9/14 17:27:30

【Oracle】PLSQL Developer 15 从零到精通的实战配置与核心功能解析

1. PLSQL Developer 15安装指南第一次接触PLSQL Developer时,我完全被它强大的功能震撼到了。作为Oracle数据库开发的瑞士军刀,这个工具能让你的工作效率提升好几倍。但要想用好它,首先得把安装这关过了。1.1 获取安装包官方下载地址是www.al…

2026/9/15 4:57:48

从《物理魔法使马修》看教育误区与个性化培养策略

1. 从马修的故事看教育中的常见误区《物理魔法使马修》这部作品通过主角马修的成长轨迹,揭示了许多家庭教育中容易陷入的误区。马修天生无法使用魔法,在魔法至上的世界里被视作“异类”,但他的养父却从未将他视为实现个人野心的工具&#xff…

2026/9/15 7:21:39

Linux日志体系实战指南:从故障排查到安全审计的完整套路

我印象最深的一次故障排查,是凌晨两点生产环境所有 Web 服务突然超时,登录服务器用df -h一看,根分区已经 100%。当时我先按老套路du了一圈,结果/var/log里没发现异常大的文件,后来突然想起 journald,用jour…

2026/9/15 7:21:39

AI批量生成商业级产品效果图核心技术解析

1. 项目概述:AI批量生成产品效果图的技术解析"能批量出产品效果图的AI软件"这个标题背后,反映的是当前设计行业对自动化工具的迫切需求。作为一名从业十年的视觉设计师,我亲历了从手工绘图到AI辅助设计的整个转型过程。真正能实现批…

2026/9/15 7:21:39

基于Matlab/Simulink的单水箱液位模糊控制设计

简介:基于Matlab的单水箱液位模糊控制系统设计资料包,面向自动化、测控及电气类专业学生,适用于课程设计、毕业设计或工程实训。系统以倒锥形容器为受控对象,通过底部压力间接测量液位,由模糊控制器调节进水电磁阀开度…

2026/9/15 7:21:39

DNS协议全解析:从基础查询到安全增强

1. DNS服务协议概述DNS(Domain Name System)作为互联网的基础设施,本质上是一个分布式数据库系统,它将人类可读的域名转换为机器可识别的IP地址。这个转换过程看似简单,实则涉及多种协议协同工作。在实际运维中&#x…

2026/9/15 7:21:39

Markdown Prompt模板设计与工程实践

1. 为什么我们需要Markdown Prompt模板作为一名长期与AI打交道的技术博主,我深刻理解Prompt工程的重要性。Markdown格式的Prompt模板之所以有价值,是因为它完美结合了结构化表达和灵活调整的需求。在实际工作中,我发现很多开发者面临几个典型…

2026/9/15 7:16:38

AI代码工具稳定性五大硬指标与工程实践

1. 这不是“选模型”而是“建稳态”:为什么AI代码工具的稳定性比生成能力更致命? 你有没有过这样的经历:凌晨两点,一个关键接口要上线,你用AI工具生成的代码片段在本地跑通了,但一上测试环境就报错&#x…

2026/9/15 4:54:30

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/15 0:01:16

AI英语单词APP开发:自适应学习算法与移动端优化实践

1. 项目概述 作为一名在移动应用开发领域摸爬滚打多年的老手,我最近完成了一个AI英语单词APP的开发项目。这个项目将传统单词记忆方法与现代AI技术相结合,打造了一款能够智能适应不同用户学习习惯的英语学习工具。 市面上大多数单词APP都存在一个通病&a…

2026/9/15 0:01:16

Flutter与OpenHarmony结合开发手语学习APP实战

1. 项目背景与核心价值作为一名同时接触过Flutter和OpenHarmony的开发者,最近我完成了一个基于Flutter for OpenHarmony的手语学习APP实战项目。这个项目最大的特点在于实现了跨平台框架与国产操作系统深度结合的创新实践——用Flutter开发的应用能完美运行在OpenHa…

2026/9/15 0:01:16

六个月成为机器人工程师:从ROS2到SLAM的实战路径

1. 六个月的紧迫感从哪来:先搞清楚你要成为哪种机器人工程师说实话,六个月的期限并不是一个宽松的时间线。市面上任何一本正经的机器人学教材都超过五百页,ROS2的官方文档可以翻到你怀疑人生,再加上ABB、KUKA这些工业机器人厂家动…

2026/9/14 11:59:31

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/14 13:53:59

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/14 11:22:57

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码