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

【从0-1的JavaScript】第2篇:JS对象的创建、使用已经内置对象

文章目录

  • JavaScript对象
  • JavaScript创建对象
    • {}创建对象
    • 通过Object对象创建
    • 通过构造函数来创建对象
    • 通过类创建对象
      • 对象属性的访问
      • 对象属性的修改
      • 对象属性的删除
      • 对象属性的添加
  • JavaScript内置对象
    • Number
    • Math
    • Date
    • String
    • RegExp
    • Array
    • JSON
  • 总结

JavaScript对象

JavaScript是一种面向对象的编程语言,JavaScript中的所有东西都是对象,对象是一个属性的无序集合,每个属性都有一个名称和值(键值对)。

JavaScript创建对象

{}创建对象

语法:使用{}来创建对象,{}中用来定义对象中的属性,属性之间用逗号分隔开来,{}中有定义的函数一般被称为方法。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>js对象创建</title>
</head>
<body><script>let person = {name : "嬴政",gender : "男",dynasty : "秦",commentFunc: function (){return "千古一帝";}}console.log(`人物:${person.name},后世评价:${person.commentFunc()}`)</script>
</body>
</html>

通过Object对象创建

Object是JavaScript中一切对象的基础对象,所有的对象都是基于它而来,所以创建的Object对象内部基本都是一些不对外开放的方法属性,是用来提供开发者创建空对象使用的。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>js对象创建</title>
</head>
<body>
<script>let obj1 = new Object();let obj2 = Object();console.log(obj1);console.log(obj2);
</script>
</body>
</html>

image-20250722150857093

通过构造函数来创建对象

构造函数是一种特殊函数,主要是用来初始化对象的,约定俗成来说,构造函数的函数名一般都要进行大写,普通函数的函数名一般都会小写。

对象通过new 构造函数来创建。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>js对象创建-构造函数</title>
</head>
<body>
<script>function Person(name = "刘邦",dynasty = "西汉",commentDesc = "草根创业成功") {this.name = name;this.dynasty = dynasty;this.commentFunc = function (){return commentDesc;}}let Person1 = new Person();console.log(`人物:${Person1.name},后世评价:${Person1.commentFunc()}`)let Person2 = new Person("刘秀","东汉","大魔导师,位面之子");console.log(`人物:${Person2.name},后世评价:${Person2.commentFunc()}`)
</script>
</body>
</html>

通过类创建对象

与C++中类型,只是构造函数名必须为construction,也等同于python中类的init方法。

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>js对象创建-类</title>
</head>
<body>
<script>class Person{constructor(name,dynasty,commentDesc) {this.name = name;this.dynasty = dynasty;this.commentDesc = commentDesc;}commentFunc(){return this.commentDesc;}}let Person1 = new Person("刘彻","西汉","三猪,穷兵黩武");console.log(`人物:${Person1.name},后世评价:${Person1.commentFunc()}`)let Person2 = new Person("刘秀","东汉","大魔导师,位面之子");console.log(`人物:${Person2.name},后世评价:${Person2.commentFunc()}`)
</script>
</body>
</html>

对象属性的访问

访问对象属性可以通过对象名.属性名或者对象名[“属性名”]来进行访问

对象属性的修改

修改对象的属性同样可以通过对象名.属性名或者对象名[“属性名”]来进行修改

对象属性的删除

删除对象属性可以通过delete关键字来进行,仅是将该属性值置为undefined或者null,并不是删除该属性值

对象属性的添加

可以通过对象名.属性名或者对象名.方法名来添加

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>js对象使用</title>
</head>
<body>
<script>let person = {name : "嬴政",gender : "男",dynasty : "秦",commentDesc : "穷兵黩武",commentFunc: function (){return "千古一帝";}}// 1、对象属性的访问console.log(person.name);console.log(person["dynasty"]);// 2、对象属性的修改person.commentDesc = "千古一帝,奠定中国的基本板块";// 3、对象属性的删除delete person.dynasty;console.log(person.dynasty);// 4、属性的追加person.preDynasty = "秦";person.say = function () {console.log("强汉");}console.log(`前一个朝代:${person.preDynasty}`)</script>
</body>
</html>

JavaScript内置对象

JavaScript有提供一些内置对象来给开发者直接使用,内置对象主要是以下几种

Number

数值对象,在js中一切的数值类型数据,都附带Number对象的属性方法,可以直接使用Number而不需要单独创建对象。

方法描述
toFixed(n)保留n个小数位
toLocaleString()千分位数字格式化,逗号分隔符格式
toPrecision(n)格式化数值的显示长度(n的取值范围在[1,21])。

Math

数学对象, 是一个静态对象,所以直接使用Math对象即可,不需要使用new创建对象,所谓静态对象,可以理解为python中的单例对象。

方法/属性描述
Math.round(num)对数值num进行四舍五入取整。
Math.ceil(num)对数值num进行向上取整,也叫进一法取整。
Math.floor(num)对数值num进行向下取整,保留整数部分,去除小数部分,也叫地板取整或舍一法取整。
Math.abs(num)去数值num的绝对值
Math.max(a,b,c,d…)求最大值
Math.min(a,b,c,d…)求最小值
Math.random()获取范围在[0,1)内的随机数值。
Math.PI圆周率

Date

日期对象,获取浏览器所在系统的时间相关信息

语法:var d = new Date(); var d = new Date(“2022-06-17 12:30:30”);

方法/属性描述
getFullYear()从 Date 对象以四位数字返回年份。
getMonth()从 Date 对象返回月份 (0 ~ 11)。
getDate()从 Date 对象返回一个月中的某一天 (1 ~ 31)。
getDay()从 Date 对象返回一周中的某一天 (0 ~ 6)。周日为0
getHours()返回 Date 对象的小时 (0 ~ 23)。
getMinutes()返回 Date 对象的分钟 (0 ~ 59)。
getMilliseconds()返回 Date 对象的毫秒(0 ~ 999)。
getSeconds()返回 Date 对象的秒数 (0 ~ 59)。
getTime()返回 1970 年 1 月 1 日至今的毫秒数。
toDateString()把 Date 对象的日期部分转换为字符串。
toJSON()以 JSON 数据格式返回日期字符串。
toLocaleDateString()根据本地时间格式,把 Date 对象的日期部分转换为字符串。
toLocaleTimeString()根据本地时间格式,把 Date 对象的时间部分转换为字符串。
toLocaleString()根据本地时间格式,把 Date 对象转换为字符串。
toTimeString()把 Date 对象的时间部分转换为字符串。

String

String是用来处理字符串的对象,提供了大量操作字符串的方法和一些属性。

方法描述
concat()拼接两个或更多字符串,并返回新的字符串。
fromCharCode()将 Unicode 编码转为字符,支持ASCII编码转换字符。
indexOf()返回某个指定的字符串值在字符串中首次出现的下标位置。
lastIndexOf()从后向前搜索字符串,并从起始位置(0)开始计算返回字符串最后出现的位置
repeat()复制字符串指定次数,并将它们连接在一起返回。
search()查找与正则表达式相匹配的下标。
match()查找找到一个或多个正则表达式的匹配。
replace()在字符串中查找匹配的子串,并替换与正则表达式匹配的子串。
replaceAll()在字符串中查找匹配的子串,并替换与正则表达式匹配的所有子串。
split()把字符串分割为字符串数组,支持按正则表达式进行模糊分割
startsWith()查看字符串是否以指定的子字符串开头。
endsWith()判断当前字符串是否是以指定的子字符串结尾的(区分大小写)。
includes()查找字符串中是否包含指定的子字符串。
slice()提取字符串的片断,并在新的字符串中返回被提取的部分。
substr()从起始索引号提取字符串中指定数目的字符。
substring()提取字符串中两个指定的索引号之间的字符。
toLowerCase()把字符串转换为小写。
toUpperCase()把字符串转换为大写。
trim()去除字符串两边的空白。

RegExp

JavaScript中的正则是一个对象,不是一个字符串格式, js中使用的正则和python里面的正则是同一套,常用于表单数据校验。

格式:/正则模式/模式修正符

模式修正符描述
i执行对大小写不敏感的匹配。
g执行全局匹配(查找所有匹配而非在找到第一个匹配后停止)。
m执行多行匹配,让*号通配符可以匹配换行符。

正则对象的方法

方法描述
exec检索字符串中指定的值。返回找到的值,并确定其位置。
test检索字符串中指定的值。返回 true 或 false。
<!doctype html>
<html lang="en">
<head><meta charset="UTF-8"><title>Document</title>
</head>
<body>
<div class="links"><a href="https://www.baidu.com">百度</a><a href="https://www.tmall.com">天猫</a><a href="https://www.jd.com">京东</a>
</div>
<script>// // 创建正则对象有2种方式:// // 1. 正则字面量创建[常用]// var reg = /1[3-9]\d{9}/// // 2. 基于RegExp构造函数创建// reg = new RegExp(/1[3-9]\d{9}/)// res = reg.test("13312345678")// console.log(res);// // 正则替换,捕获模式,模式的反向引用// mobile = "13312345678" // 133****5678// var ret = mobile.replace(/(1[3-9]\d)\d{4}(\d{4})/,"$1****$2");  // 捕获模式, 参数中的$1代表正则中的第一个小括号的内容,$2表示第二个小括号,这种用法叫反向引用.// console.log(ret); // 133****5678// // 正则分割// var str = "1323fdsd23545das53466";// ret = str.split(/\d+/);// console.log(ret); // ["", "fdsd", "das", ""]// 正则查找// var exp = /^1[3-9]\d{9}$/// console.log( exp.exec("13312345678") );// 正则匹配var links = document.querySelector(".links").innerHTML;console.log(links)// var exp = /<a href="(.*?)">(.*?)<\/a>/// console.log(links.search(exp)); // 获取首次匹配的下标// console.log(links.match(exp));  // 获取首次匹配的内容信息var exp1 = /<a href="(.*?)">(.*?)<\/a>/gconsole.log(links.match(exp1)); // 获取所有匹配的内容</script>
</body>
</html>

Array

数组对象,提供了所有关于数组类型数据的基本操作。

方法描述
concat()合并数组,连接两个或更多的数组,并返回结果。
pop()删除数组的最后一个元素并返回删除的元素。
push()向数组的末尾添加一个或更多元素,并返回新的长度。
shift()删除并返回数组的第一个元素。
unshift()向数组的开头添加一个或更多元素,并返回新的长度。
reverse()反转数组的元素顺序。
entries()返回数组的可迭代对象。
keys()返回数组的可迭代对象,包含原始数组的键(key)。
forEach()数组每个元素都执行一次回调函数。
includes()判断一个数组是否包含一个指定的值。
slice()选取数组的一部分,并返回一个新数组。相当于python中的切片操作
indexOf()搜索数组中的元素,并返回它所在的位置。
lastIndexOf()搜索数组中的元素,并返回它最后出现的位置。
Array.isArray()判断对象是否为数组。
join()把数组的所有元素放入一个字符串。与字符串的**split**方法对应。
every()检测数值元素的每个元素是否都符合条件
some()检测数组元素中是否有至少一个元素符合指定条件
filter()检测数值元素,并返回符合条件所有元素的数组。
find()返回符合传入测试(函数)条件的数组元素的值。filter的别名函数
findIndex()返回符合传入测试(函数)条件的数组元素的索引。
map()通过指定函数处理数组的每个元素,并返回处理后的数组。
reduce()将数组元素计算为一个值(从左到右)。
reduceRight()将数组元素计算为一个值(从右到左)。
sort()对数组的元素进行排序,也可以把排序函数作为参数进行排序。
splice()从数组中添加、删除、替换元素。
toString()把数组转换为字符串,并返回结果。

JSON

JSON 全称为“JavaScript Object Notation”,是当前最流行的一种轻量级的数据交换格式,用来存储和传输数据,通常服务器端与客户端在进行交互时就是使用 JSON 格式的数据

方法描述
JSON.stringify(obj)把obj对象转换成json格式字符串,会移除对象方法
JSON.parse(str)把符合json语法的字符串转换成js对象
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>Title</title>
</head>
<body>
<script>// // 把对象转换成json字符串// var a = {name:"小名",age:18,};// console.log(a);// var t = JSON.stringify(a);// console.log( t ); // {"name":"小名","age":18}// console.log( typeof t ); // string// 把符合json语法的字符串转换成对象var str = '{"name":"小名","age":18}';console.log(str);data = JSON.parse(str);console.log(data);
</script>
</body>
</html>

总结

JavaScript是一种面向对象的编程语言,JavaScript中的所有东西都是对象,对象的创建可以通过{}、构造函数、class类、Object来创建,同时对象属性的访问和修改都可以对象名.属性名或者对象名[“属性名”],使用delete删除对象属性时只是将该属性值置为undefined或者null,而不是删除这个属性,JavaScript也提供了很多内置对象及其方法来给开发者使用。

http://www.lryc.cn/news/595978.html

相关文章:

  • 操作系统 —— A / 概述
  • API网关原理与使用场景详解
  • Android AppCompat:实现Material Design向后兼容的终极指南
  • Apache Ignite扫描查询
  • 快手视觉算法面试30问全景精解
  • 2025 年非关系型数据库全面指南:类型、优势
  • Apache Ignite缓存基本操作
  • [Dify] -进阶10- Dify 的用户输入结构:变量、参数、文件上传全解析
  • 如何撤销Git提交误操作
  • 【音视频协议篇】RTMP协议
  • haproxy的负载均衡集群搭建
  • 构建智能视频中枢--多路RTSP转RTMP推送模块在轨道交通与工业应用中的技术方案探究
  • 最新AI与Python在地球科学多源数据交叉融合中的前沿技术应用
  • linux用户态各定时器抖动测试
  • 「Linux命令基础」用户组管理
  • MongoDB频繁掉线频繁断开服务的核心原因以及解决方案-卓伊凡|贝贝|莉莉|糖果
  • stream流入门
  • 企业知识库软件选型与实践指南
  • LINUX 722 逻辑卷快照
  • useState
  • 3.4 安全-分布式-数据库-挖掘
  • Java并发编程:JUC核心组件全解析
  • IMU(LSM6DSMTR+LIS2MDLTR)
  • 隧道代理与普通代理:一场网络隐身术的“智能革命”
  • 开发者的AI认知指南:用大模型重新理解人工智能(上)
  • 基于AutoJawSegment项目的CBCT图像分割实践指南
  • Qt开发环境搭建全攻略(Windows+Linux+macOS)
  • Navicat 远程连接SQLlite数据库
  • 【NLP舆情分析】基于python微博舆情分析可视化系统(flask+pandas+echarts) 视频教程 - 主页-微博基本信息实现
  • DearMom以“新生儿安全系统”重塑婴儿车价值,揽获CBME双项大奖