编程笔记 html5cssjs 086 JavaScript 内置对象

编程笔记 html5&css&js 086 JavaScript 内置对象

  • 一、Object
  • 二、Array
  • 三、String
  • 四、Number
  • 五、Math
  • 六、Date
  • 七、RegExp
  • 八、Function
  • 九、示例
  • 小结

JavaScript 内置对象是 JavaScript 语言本身定义的一系列预定义的对象,这些对象在全局作用域中可以直接使用,无需创建实例。它们为开发者提供了基础且强大的功能,涵盖数据结构、数学运算、日期处理、正则表达式匹配以及其他核心功能。

以下是一些主要的内置对象及其用途、属性和方法:

一、Object

  • 用途:所有 JavaScript 对象的基类,可以用来创建自定义对象或直接操作任意对象。
  • 属性
    • prototype:用于实现原型继承的属性。
  • 方法
    • Object.create():基于指定的原型创建新对象。
    • Object.defineProperty() / Object.defineProperties():定义对象的属性及其特性(如可枚举性、可写性等)。
    • Object.getOwnPropertyDescriptor():返回某个对象属性的描述符。
    • Object.keys() / Object.values() / Object.entries():返回对象自身可枚举属性的键名数组、值数组或键值对数组。
    • Object.assign():合并源对象的所有可枚举属性到目标对象。
    • Object.is():严格比较两个值是否全等。

二、Array

  • 用途:存储有序的数据集合,支持多种数组操作方法。
  • 属性
    • length:数组的元素个数。
  • 方法
    • push() / pop():向数组尾部添加/移除元素。
    • shift() / unshift():向数组头部添加/移除元素。
    • join():将数组元素转换为字符串,以分隔符连接。
    • slice():提取数组的一部分。
    • splice():删除或替换数组中的元素。
    • map() / filter() / reduce() 等:数组遍历及操作方法。
    • indexOf() / lastIndexOf():查找元素索引位置。
    • forEach() / every() / some():迭代方法。

三、String

  • 用途:表示文本数据,提供字符串操作的功能。
  • 属性
    • length:字符串的长度。
  • 方法
    • charAt() / charCodeAt():获取指定位置字符或其Unicode编码。
    • concat():拼接字符串。
    • indexOf() / lastIndexOf():查找子串首次出现的位置。
    • slice() / substring() / substr():提取部分字符串。
    • trim() / trimStart() / trimEnd():去除字符串两侧空白字符。
    • toLowerCase() / toUpperCase():转换为小写/大写。
    • split():根据分隔符切割字符串为数组。
    • replace():替换子串。
    • match() / search():正则匹配与搜索。

四、Number

  • 用途:表示数值类型数据,提供数字相关的方法和常量。
  • 属性
    • MAX_VALUE / MIN_VALUE: 最大和最小可表示数值。
    • NaN: 表示非数字值。
    • POSITIVE_INFINITY / NEGATIVE_INFINITY: 正负无穷大。
  • 方法
    • toFixed(): 指定小数位数的四舍五入并转为字符串。
    • toExponential(): 转换为指数计数法的字符串。
    • toString(): 将数字转换为字符串形式。
    • valueOf(): 返回一个数字的基本数值。

五、Math

  • 用途:提供数学计算相关的常量和函数。
  • 方法
    • Math.abs():求绝对值。
    • Math.floor() / Math.ceil() / Math.round():向下取整、向上取整、四舍五入。
    • Math.max() / Math.min():求最大值和最小值。
    • Math.pow():计算乘方。
    • Math.sqrt():开平方根。
    • Math.random():生成[0, 1)之间的随机浮点数。

六、Date

  • 用途:处理日期和时间。
  • 属性
    • Date.now():返回当前时间戳。
    • Date.prototype.getFullYear() / getMonth() / getDate() 等:获取日期的各个组成部分。
  • 方法
    • new Date():创建一个新的日期对象。
    • Date.prototype.setFullYear() / setMonth() / setDate() 等:设置日期的各个组成部分。
    • Date.prototype.toDateString() / toLocaleDateString():格式化日期输出。

七、RegExp

  • 用途:进行正则表达式的匹配和测试。
  • 构造函数
    • new RegExp(pattern[, flags]):创建正则表达式对象。
  • 方法
    • test():检测字符串是否符合正则表达式。
    • exec():执行正则表达式,并返回匹配结果。

八、Function

  • 用途:表示可执行代码块,即函数对象。
  • 属性
    • name:函数名称。
  • 方法
    • 函数体内的各种语句执行逻辑。
    • 可作为构造函数使用,通过 new Function(args, body) 创建新的函数。

此外还有其他内置对象,比如 MapSetWeakMapWeakSet(ES6 新增)用于键值对的存储,Promise 用于异步编程,Symbol 提供了独一无二的标识符,Error 类型用于抛出和捕获异常等。随着 ECMAScript 标准的演进,有更多的内置对象被引入来增强 JavaScript 的功能。

九、示例

在实际的编程场景中,一个脚本通常不会一次性用到所有内置对象。不过,我可以构造一个示例来展示如何在一个相对复杂的场景下使用多种JavaScript内置对象:

// 使用 Date 对象获取当前日期和时间
const currentDate = new Date();
console.log(`当前日期:${currentDate.toDateString()},当前时间:${currentDate.toLocaleTimeString()}`);// 使用 Array 和 Math 内置对象进行一些数学操作
const numbers = [1, 2, 3, 4, 5];
let sum = numbers.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log('数组元素之和:', sum);const randomIndex = Math.floor(Math.random() * numbers.length);
const randomElement = numbers[randomIndex];
console.log(`随机选取的数组元素:${randomElement}`);// 使用 String 对象处理字符串
const greeting = 'Hello, World!';
const reversedGreeting = greeting.split('').reverse().join('');
console.log('反转的问候语:', reversedGreeting);// 使用 RegExp 进行正则匹配
const emailPattern = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
const isValidEmail = emailPattern.test('example@example.com');
console.log('邮箱是否有效:', isValidEmail);// 使用 Function 创建可执行函数
const multiply = new Function('x', 'y', 'return x * y;');
console.log('结果:', multiply(5, 3));// 使用 Object 来创建自定义对象并操作其属性
const person = {name: 'John Doe',age: 30,
};Object.defineProperty(person, 'fullName', {get: function() {return `${this.name} (${this.age})`;},
});console.log('完整姓名:', person.fullName);// 使用 Map 和 Set 进行数据存储
const mapExample = new Map();
mapExample.set('firstName', 'John');
mapExample.set('lastName', 'Doe');const setExample = new Set();
setExample.add('apple');
setExample.add('banana');console.log('Map 中的数据:', [...mapExample]);
console.log('Set 中的唯一元素:', [...setExample]);// 使用 Promise 处理异步逻辑(这里仅做模拟)
function fetchUserData(userId) {return new Promise((resolve) => {setTimeout(() => {resolve({id: userId,username: 'john_doe',});}, 1000);});
}fetchUserData(1).then((userData) => console.log('用户数据:', userData)).catch((error) => console.error('错误:', error));

这个示例并没有涵盖 JavaScript 的所有内置对象,但展示了如何在实际应用中结合使用多个内置对象。每个内置对象在不同的上下文中都有其特定用途。

小结

JavaScript 内置对象的重要性:

  1. 基础功能提供:内置对象提供了编程语言的基础构建块,比如数据结构(Array、String、Number、Boolean等)、日期和时间处理(Date)、正则表达式匹配(RegExp)、错误处理(Error)、函数定义与执行(Function)等。这些基本功能使得开发者无需从零开始实现这些底层逻辑,大大提高了开发效率。

  2. 简化代码编写:通过内置对象提供的属性和方法,开发者可以方便地进行各种操作,如数组元素的添加、删除、排序、遍历;字符串的各种格式化、查找、替换操作;数字的数学计算、进制转换等。这使得代码更加简洁易读,同时也减少了潜在的错误来源。

  3. 提升性能:JavaScript 引擎通常会对内置对象的某些方法进行优化,以提高运行时的性能。例如,使用 Array.prototype.forEachmapreduce 等方法遍历数组,相比于传统的 for 循环,在很多情况下会有更好的性能表现。

  4. 面向对象编程支持:Object 对象是所有 JavaScript 对象的原型,通过它提供的构造器和其他方法(如 Object.createObject.defineProperty 等),可以创建并扩展自定义对象,为实现面向对象编程提供了便利。

  5. 异步编程支持:Promise 是用于处理异步操作的标准内置对象,它带来了更优雅的异步编程体验,有助于解决回调地狱问题,提高代码的可读性和维护性。

  6. 现代特性支持:随着 ECMAScript 标准的演进,新增了许多内置对象,如 Map、Set、WeakMap、WeakSet、Symbol、Proxy、Reflect 等,它们为开发者提供了更多高级功能,支持更复杂的程序设计需求。

总之,JavaScript 的内置对象极大地丰富了其语言特性和功能,使开发者能够高效地构建各种类型的应用程序,并且随着 JavaScript 语言的不断发展和完善,内置对象将持续发挥关键作用,支撑起前端乃至全栈开发的基石。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/703274.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Cubase学习:Cubase 12常用快捷键

按键盘上的上下箭头就可以让选中的音符向上或向下移动 数字0键: 停止 Ctrl+数字 0 键: 新建视图层 Alt+数字0 键: 重新设置视图层 小数点键: 播放指针回零点 数字1 键: 左定位指针 数字 2 键: 右定位指针 数字3 键--数字9键: 分别控制 3--9 的7个定位标志 Alt+数字1 键--数字9键…

HuggingFists系统功能介绍(5)--环境资源

模型库 模型库用于管理由HuggingFists系统自己生成的或者外部导入的各种模型。如:HuggingFace网站提供的各类模型可导入该模块进行统一管理及部署。该功能目前在HuggingFists的社区版中并未提供。 环境管理 环境管理-工作节点 环境管理-服务配置 环境管理主要用于与…

protobuf简单使用(二)

介绍 上一节中,我们介绍了protobuf,简单来说,它是一种消息数据格式,其作用类似于json,但是比json的使用效率要高。 除此以外,我们介绍了protobuf的简单使用,也就是如何可以像使用json一样&…

2627. 函数防抖

说在前面 🎈不知道大家对于算法的学习是一个怎样的心态呢?为了面试还是因为兴趣?不管是出于什么原因,算法学习需要持续保持。 题目描述 请你编写一个函数,接收参数为另一个函数和一个以毫秒为单位的时间 t &#xff0…

Linux之vim的使用详细解析

个人主页:点我进入主页 专栏分类:C语言初阶 C语言进阶 数据结构初阶 Linux C初阶 算法 欢迎大家点赞,评论,收藏。 一起努力,一起奔赴大厂 目录 一.vim简介 二.vim的基本概念 三.vim的基本操作 3.1准备 …

DrawIO常用模版

其他 - 编辑绘图 泳道图 多级审批流程 <mxGraphModel dx="1298" dy="744" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1…

状态空间模型(SSM)

论文&#xff1a;A new approach to linear filtering and prediction problems http://160.78.24.2/Public/Kalman/Kalman1960.pdf 状态空间模型介绍 术语状态空间模型具有非常广泛的含义&#xff0c;它简单地表示任何具有潜在状态的循环过程的概念。 它已被用来指代不同学科…

MySQL数据库进阶第四篇(视图/存储过程/触发器)

文章目录 一、视图简单介绍与基础语法二、视图的检查选项三、视图的更新四、视图的作用五、存储过程的概念与特点六、存储过程的 创建&#xff0c;调用&#xff0c;查看&#xff0c;删除七、存储过程 — 系统变量八、存储过程 — 用户定义变量九、存储过程 — 局部变量十、存储…

深入理解指针2

各位小伙伴们&#xff0c;我们继续来学习指针&#xff0c;指针和结构体以及动态内存管理对后面的数据结构学习有非常大的帮助&#xff0c;所有我们一定要把这些知识点学会。OK,正式进入学习之旅吧 1.数组名的理解 在上⼀个章节我们在使⽤指针访问数组的内容时&#xff0c;有这…

免费分享一套SpringBoot+Vue实验室(预约)管理系统,帅呆了~~

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的SpringBootVue实验室(预约)管理系统 &#xff0c;分享下哈。 项目视频演示 【免费】SpringBootVue实验室(预约)管理系统 Java毕业设计_哔哩哔哩_bilibili【免费】SpringBootVue实验室(预约)管理系统 Java毕…

微信小程序 wxs内联与外联的写法

内联写法 <!-- 内联wxs --> <view>大写字母{{m1.toUpper("xmly")}}</view> <wxs module"m1">module.exports.toUpperfunction(str){return str.toUpperCase()} </wxs> 外联写法 新建一个wxs文件 写一个函数&#xff0c;将…

python实现时间序列预测模型实战案例

时间序列预测是预测时间序列未来值的过程。这种预测在多种领域都有应用&#xff0c;包括金融、气象、销售预测等。下面是一个使用Python和Facebook的Prophet库进行时间序列预测的实战案例。 Prophet是一个用于时间序列预测的Python库&#xff0c;由Facebook开发并开源。它特别…

争取用一张图说清楚什么是编译器(Compiler)

抽完一颗烟&#xff0c;回来&#xff0c;突然看到了德州仪器的各个DSP芯片的编译器&#xff0c;想到了给编译器做个说明&#xff0c;争取对编译器概念有点糊涂的小朋友能突然一下明白&#xff0c; ┗|&#xff40;O′|┛ 嗷~~ 编译器就是 人机间 语言 的 翻译官&#xff08;Tra…

YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information

论文地址&#xff1a;https://arxiv.org/pdf/2402.13616.pdf 代码地址&#xff1a;GitHub - WongKinYiu/yolov9: Implementation of paper - YOLOv9: Learning What You Want to Learn Using Programmable Gradient Information yolov7的作者更新了yolov9 摘要 当今的深度学习方…

TypeScript基础知识点

TypeScript 简介和发展 TypeScript 是一种由微软开发的开源编程语言&#xff0c;其设计目标是为了解决 JavaScript 在大规模应用开发时所面临的类型安全和可维护性问题。TypeScript 的诞生背景可以追溯到2012年&#xff0c;当时随着Web应用程序复杂度的日益增长&#xff0c;J…

PCIe 5.0 Layout Guide笔记

一、松耦合和紧耦合 松耦合优点是相同走线宽度下电介质更薄,同时对线间距的变化不敏感,提供了更好的阻抗控制;松耦合缺点是需要更大的区域进行绕线;紧耦合优点是更高的布线密度,相同阻抗下走线可以更细,同时具有更好的共模噪声抑制;紧耦合缺点是阻抗随线间距的变化大;【…

一个模板项目复制多个时候报错

复制的项目虽然用新idea打开&#xff0c;但是用的parent版本号&#xff0c;或者名字还是一个&#xff0c;这块要改&#xff0c;改版本号就行&#xff0c;子项目也改 循环依赖解决 pom中引入了循环依赖&#xff0c;pom已经最新&#xff0c;但是启动还是报错&#xff0c;idea缓…

Llama中文大模型

关于Llama中文大模型 欢迎来到Llama中文大模型&#xff1a;已经基于大规模中文数据&#xff0c;从预训练开始对Llama2模型进行中文能力的持续迭代升级。 Llama中文大模型 &#xff1a;https://github.com/LlamaFamily/Llama-Chinese 在线体验 &#xff1a;https://llama.fam…

基于Java的艺培管理解决方案

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

cmake构建在Visual stdio 2019 和Xcode的Qt的程序

概述&#xff1a;用CMake可以方便地构建Qt的应用程序&#xff0c;前提是你已经配置好用Visual Stdio 开发的Qt的环境或者Xcode的Qt开发环境。 1、编写CMakeLists.txt cmake_minimum_required(VERSION 3.6)set(CMAKE_CONFIGURATION_TYPES "Debug;Release" CACHE STR…