JavaScript第八讲:日期,Math,自定义对象
目录
前言
日期
1. 创建日期对象
2. 年/月/日
3. 时:分:秒:毫秒
4. 一周的第几天
5. 经历的毫秒数
6. 修改日期和时间
Math
1. 自然对数和圆周率
2. 绝对值
3. 最小最大
4. 求幂
5. 四舍五入
6. 随机数
自定义对象
1. 通过 new Object 创建对象
2. 通过 function 设计一个对象(构造函数)
3. 为已经存在的对象,增加新的方法
添加到对象的原型(推荐)
直接添加到对象的实例(不推荐,但可行)
结语
前言
在JavaScript编程的旅途中,我们经常会遇到需要处理日期、数学运算以及创建和使用自定义对象的情况。这些基础而重要的概念构成了JavaScript编程的核心部分,无论是在前端开发还是后端开发中,它们都扮演着不可或缺的角色。
通过本文的学习,你将能够掌握这些基本概念,并能够在自己的项目中灵活运用它们。无论你是JavaScript的初学者还是有一定经验的开发者,相信本文都能为你提供有价值的参考和启示。
日期
1. 创建日期对象
在JavaScript中,你可以使用Date对象来存储和操作日期和时间。Date对象可以自动获取当前的日期和时间,或者你可以给它指定一个特定的日期和时间。
// 创建一个表示当前日期和时间的Date对象
let now = new Date();
console.log(now); // 输出类似 "Wed Jun 30 2023 15:49:02 GMT+0800 (中国标准时间)" // 创建一个表示特定日期和时间的Date对象
let specificDate = new Date(2023, 5, 30, 10, 30, 0, 0); // 注意月份是从0开始的,所以6月是5
console.log(specificDate); // 输出类似 "Sat Jun 30 2023 10:30:00 GMT+0800 (中国标准时间)"
2. 年/月/日
你可以使用getFullYear(), getMonth(), 和 getDate() 方法来获取日期的年、月和日。
let date = new Date(2023, 5, 30);
console.log(date.getFullYear()); // 输出 2023
console.log(date.getMonth() + 1); // 输出 6,因为月份是从0开始的
console.log(date.getDate()); // 输出 30
3. 时:分:秒:毫秒
你可以使用getHours(), getMinutes(), getSeconds(), 和 getMilliseconds() 方法来获取时间的小时、分钟、秒和毫秒。
let time = new Date();
console.log(time.getHours()); // 输出当前小时
console.log(time.getMinutes()); // 输出当前分钟
console.log(time.getSeconds()); // 输出当前秒
console.log(time.getMilliseconds()); // 输出当前毫秒
4. 一周的第几天
你可以使用getDay() 方法来获取日期是一周中的第几天(0代表星期日,1代表星期一,以此类推)。
let dayOfWeek = new Date(2023, 5, 30).getDay();
console.log(dayOfWeek); // 输出 6,因为2023年6月30日是星期六
5. 经历的毫秒数
你可以使用getTime() 方法来获取从1970年1月1日00:00:00 UTC(世界标准时间)到当前日期和时间的毫秒数。
let timeInMilliseconds = new Date().getTime();
console.log(timeInMilliseconds); // 输出从1970年1月1日到现在的毫秒数
6. 修改日期和时间
你可以使用setFullYear(), setMonth(), setDate(), setHours(), setMinutes(), setSeconds(), 和 setMilliseconds() 方法来修改日期和时间。
let date = new Date(2023, 5, 30);
date.setFullYear(2024); // 修改年份为2024
date.setMonth(0); // 修改月份为1月(注意月份是从0开始的)
date.setDate(1); // 修改日期为1日
console.log(date); // 输出类似 "Wed Jan 01 2024 00:00:00 GMT+0800 (中国标准时间)"
Math
1. 自然对数和圆周率
Math对象提供了对自然对数(Math.LN2、Math.LNE、Math.LOG2E、Math.LOG10E)和圆周率(Math.PI)的访问。
// 圆周率
console.log(Math.PI); // 输出 3.141592653589793(近似值) // 自然对数相关的常量
console.log(Math.LN2); // 输出 0.6931471805599453(ln(2) 的值)
console.log(Math.LNE); // 输出 1(e 的自然对数的值,即 ln(e))
console.log(Math.LOG2E); // 输出 1.4426950408889634(e 的以2为底的对数的值)
console.log(Math.LOG10E); // 输出 0.4342944819032518(e 的以10为底的对数的值)
2. 绝对值
使用Math.abs()方法可以计算一个数的绝对值。
console.log(Math.abs(-5)); // 输出 5
console.log(Math.abs(10)); // 输出 10
3. 最小最大
Math.min()和Math.max()方法用于找出一组数值中的最小值和最大值。
console.log(Math.min(1, 2, 3, 4, 5)); // 输出 1
console.log(Math.max(1, 2, 3, 4, 5)); // 输出 5
4. 求幂
Math.pow()方法用于计算一个数的幂。
console.log(Math.pow(2, 3)); // 输出 8(2的3次方)
console.log(Math.pow(3, 2)); // 输出 9(3的2次方)
5. 四舍五入
Math对象提供了几种四舍五入的方法:
Math.round():标准四舍五入。Math.floor():向下取整。Math.ceil():向上取整。
console.log(Math.round(4.5)); // 输出 5
console.log(Math.floor(4.5)); // 输出 4
console.log(Math.ceil(4.5)); // 输出 5
6. 随机数
Math.random()方法用于生成一个[0, 1)之间的伪随机数。
// 生成一个 0 到 1 之间的随机数
let randomNum = Math.random();
console.log(randomNum); // 生成一个指定范围内的随机数(例如,1 到 10 之间)
let min = 1;
let max = 10;
let randomNumInRange = Math.random() * (max - min) + min;
console.log(randomNumInRange);
自定义对象
1. 通过 new Object 创建对象
在JavaScript中,你可以使用new Object()来创建一个新的空对象,然后为其添加属性和方法。
// 创建一个新的空对象
let person = new Object(); // 为对象添加属性
person.name = "Alice";
person.age = 30; // 为对象添加方法
person.greet = function() { console.log(`Hello, my name is ${this.name}`);
}; // 调用方法
person.greet(); // 输出: Hello, my name is Alice
2. 通过 function 设计一个对象(构造函数)
更常见的做法是使用函数作为构造函数来创建对象。这种方式可以通过new关键字来调用构造函数,并创建具有相同属性和方法的新对象。
// 定义一个构造函数
function Person(name, age) { this.name = name; this.age = age; // 为对象添加方法 this.greet = function() { console.log(`Hello, my name is ${this.name}`); };
} // 使用new关键字和构造函数来创建对象
let person1 = new Person("Bob", 25);
let person2 = new Person("Charlie", 35); // 调用方法
person1.greet(); // 输出: Hello, my name is Bob
person2.greet(); // 输出: Hello, my name is Charlie
3. 为已经存在的对象,增加新的方法
如果你已经有一个对象,并且想要为其添加新的方法,你可以直接为对象的原型添加方法,或者直接为对象的实例添加方法。但请注意,直接在对象实例上添加方法通常不推荐,因为这会导致每个实例都有自己的方法副本,而不是共享同一个方法。
添加到对象的原型(推荐)
// 假设我们已经有了一个Person构造函数
function Person(name, age) { this.name = name; this.age = age;
} // 为Person的原型添加方法
Person.prototype.greet = function() { console.log(`Hello, my name is ${this.name}`);
}; // 创建对象
let person3 = new Person("David", 40); // 调用方法
person3.greet(); // 输出: Hello, my name is David
直接添加到对象的实例(不推荐,但可行)
// 假设我们已经有了一个Person的实例
let person4 = { name: "Eve", age: 20
}; // 为这个特定的实例添加方法
person4.greet = function() { console.log(`Hello, my name is ${this.name}`);
}; // 调用方法
person4.greet(); // 输出: Hello, my name is Eve // 注意:这种方法只会影响person4这个特定的实例,不会影响其他Person实例。
结语
下一节有本文的练习题。有需要的码客们可以去看一下
经过本文的学习,你已经对JavaScript中的日期处理、数学运算和自定义对象有了深入的了解。Date对象使你能够轻松地创建、操作和格式化日期;Math对象提供了一系列强大的数学方法和常量,帮助你进行复杂的数学运算;而自定义对象则是你实现模块化、封装和复用的关键。
这些基础知识不仅是你编写高效、健壮的JavaScript代码的基础,也是你成为一名优秀JavaScript开发者的必经之路。希望你在今后的学习和实践中,能够不断巩固和扩展这些知识,并探索JavaScript更多的高级特性和应用。
最后,感谢你的阅读和学习。相信在JavaScript编程的道路上,你会越走越远,取得更加辉煌的成就!
respect!
相关文章:
JavaScript第八讲:日期,Math,自定义对象
目录 前言 日期 1. 创建日期对象 2. 年/月/日 3. 时:分:秒:毫秒 4. 一周的第几天 5. 经历的毫秒数 6. 修改日期和时间 Math 1. 自然对数和圆周率 2. 绝对值 3. 最小最大 4. 求幂 5. 四舍五入 6. 随机数 自定义对象 1. 通过 new Object 创建对象 2. 通过 funct…...
php质量工具系列之phploc
phploc是一个快速测量PHP项目大小的工具 结果支持raw csv xml json格式,可输出文件或者打印到控制台 安装 PHAR方式 wget https://phar.phpunit.de/phploc.pharphp phploc.phar -vComposer方式(推荐) composer global require --dev phploc/phplocphploc -v使用 …...
创建模拟器
修改模拟器默认路径 由于模拟器文件比较大,默认路径在C:\Users\用户名.android\avd,可修改默认路径 创建修改后的路径文件 D:\A-software\Android\AVD添加系统变量ANDROID_SDK_HOME:D:\A-software\Android\AVD重启Android Studio 创建模拟…...
【Java】接口详解
接口是抽象类的更进一步. 抽象类中还可以包含非抽象方法, 和字段. 而接口中包含的方法都是抽象方法, 字段只能包含静态常量。 一个简单的接口代码示例 interface IShape { void draw(); } class Cycle implements IShape { Override public void draw() { System.out.println…...
去掉el-table表头右侧类名是gutter,width=17px的空白区域(包括表头样式及表格奇偶行样式和表格自动滚动)
代码如下: <el-table:data"tableData"ref"scroll_Table":header-cell-style"getRowClass":cell-style"styleBack"height"350px"style"width: 100%"><el-table-column prop"id" l…...
3079. 求出加密整数的和
给你一个整数数组 nums ,数组中的元素都是 正 整数。定义一个加密函数 encrypt ,encrypt(x) 将一个整数 x 中 每一个 数位都用 x 中的 最大 数位替换。比方说 encrypt(523) 555 且 encrypt(213) 333 。 请你返回数组中所有元素加密后的 和 。 示例 1&…...
奶茶店、女装店、餐饮店是高危创业方向,原因如下:
关注卢松松,会经常给你分享一些我的经验和观点。 现在的俊男靓女们,心中都有一个执念: (1)想证明自己了,开个奶茶去…… (2)想多赚点钱了,加盟餐饮店去…… (3)工作不顺心了,搞个女装店去…… 但凡抱着…...
嵌入式笔试面试刷题(day16)
文章目录 前言一、PWM波形的占空比计算公式是什么?二、ADC和DAC在嵌入式系统中的应用场景有哪些?三、watchdog定时器的作用及其在系统中的使用是什么?四、JTAG接口在嵌入式开发中的作用是什么?五、实时操作系统(RTOS)的任务调度策…...
【MyBatis】MyBatis操作数据库(二):动态SQL、#{}与${}的区别
目录 一、 动态SQL1.1 \<if>标签1.2 \<trim>标签1.3 \<where>标签1.4 \<set>标签1.5 \<foreach>标签1.6 \<include>标签 二、 #{}与${}的区别2.1 #{}是预编译sql,${}是即时sql2.2 SQL注入2.3 #{}性能高于${}2.4 ${}用于排序功能…...
[Zer0pts2020]easy strcmp 分析与加法
查壳 Ubuntu上的64位程序 第一步应该尝试运行一下 啥也不是 (这里我改了程序,原来应该是a1>1) 但是我动调发现a1值是1 我就改了判断 但是还是没什么用 也找不到a2的引用 找一下有没有什么improt调用 发现还是啥也不是 思路这里断了 刚好这个程序几个代码而已 函数看…...
力扣7. 整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。 示例 1: 输…...
Mac/Linux getline 无法读取文件内容(读取内容无法显示)
如下面代码 #include <iostream> #include <fstream>using namespace std;int main() {string file_name "1.txt";std::ifstream file(file_name);if (file.is_open()) {std::string line;while (std::getline(file, line)) {char c line.back();cout…...
NBM 算法【python,算法,机器学习】
朴素贝叶斯法(Naive Bayes model)是基于贝叶斯定理与特征条件独立假设的分类方法。 贝叶斯定理 P ( A ∣ B ) P ( B ∣ A ) ∗ P ( A ) P ( B ) P(A|B)\frac{P(B|A) * P(A)}{P(B)} P(A∣B)P(B)P(B∣A)∗P(A) 其中A表示分类,B表示属性&…...
spark3.0.1版本查询Hbase数据库例子
需求背景 现有需求,需要采用spark查询hbase数据库的数据同步到中间分析库,记录spark集成hbase的简单例子代码 import org.apache.hadoop.hbase.HBaseConfiguration import org.apache.hadoop.hbase.client.{ConnectionFactory, Scan} import org.apach…...
android高效读图方式——Hardwarebuffer读图
安卓上有许许多多使用OpenGL来渲染的原因,比方说做特效/动画/硬解/人脸识别等等。渲染完成后如何从gpu中把数据快速读取出来也是高效图像处理中的重要的一环。 相对于glReadPixel的同步读取方式,安卓GLES3.0提供了更高效快速的Hardwarebuffer读图方式&a…...
悉数六大设计原则
悉数六大设计原则 目录 悉数六大设计原则前言☕谁发明了设计模式设计原则设计原则与设计模式的关系 单一职责什么是单一职责不遵循单一职责原则的设计遵循单一职责原则的设计单一职责的优点示例代码: 里氏替换原则什么是里氏替换原则示例代码:违反里氏替…...
hdfs复习
一.hadoop概述 1.4高(优势) 1).高可靠性:hadoop底层多个数据副本,即使某个计算节点存储出现故障,不会导致数据丢失。 2).高扩展性:可以动态增加服务器节点。 3).高效…...
css-Ant-Menu 导航菜单更改为左侧列表行选中
1.Ant-Menu导航菜单 导航菜单是一个网站的灵魂,用户依赖导航在各个页面中进行跳转。一般分为顶部导航和侧边导航,顶部导航提供全局性的类目和功能,侧边导航提供多级结构来收纳和排列网站架构。 2.具体代码 html <!-- 左侧切换 --><…...
02-CSS3基本样式
目录 1. CSS3简介 1.1 CSS3的兼容情况 1.2 优雅降级和渐进增强的开发思想 2. 新增选择器 2.1 选择相邻兄弟 2.2 匹配选择器 2.3 属性选择器(重点) 2.4 结构性伪类选择器(重点) 2.4.1 整体结构类型 2.4.2 标签结构类型 2.4.3 指定子元素的序号&…...
USART串口外设
USART介绍 USART:另外我们经常还会遇到串口,叫UART,少了个S,就是通用异步收发器,一般我们串口很少使用这个同步功能,所以USART和UART使用起来,也没有什么区别。 其实这个STM32的USART同步模式&a…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
C++_核心编程_多态案例二-制作饮品
#include <iostream> #include <string> using namespace std;/*制作饮品的大致流程为:煮水 - 冲泡 - 倒入杯中 - 加入辅料 利用多态技术实现本案例,提供抽象制作饮品基类,提供子类制作咖啡和茶叶*//*基类*/ class AbstractDr…...
智慧医疗能源事业线深度画像分析(上)
引言 医疗行业作为现代社会的关键基础设施,其能源消耗与环境影响正日益受到关注。随着全球"双碳"目标的推进和可持续发展理念的深入,智慧医疗能源事业线应运而生,致力于通过创新技术与管理方案,重构医疗领域的能源使用模式。这一事业线融合了能源管理、可持续发…...
云计算——弹性云计算器(ECS)
弹性云服务器:ECS 概述 云计算重构了ICT系统,云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台,包含如下主要概念。 ECS(Elastic Cloud Server):即弹性云服务器,是云计算…...
(二)TensorRT-LLM | 模型导出(v0.20.0rc3)
0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述,后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作,其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...
STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
html-<abbr> 缩写或首字母缩略词
定义与作用 <abbr> 标签用于表示缩写或首字母缩略词,它可以帮助用户更好地理解缩写的含义,尤其是对于那些不熟悉该缩写的用户。 title 属性的内容提供了缩写的详细说明。当用户将鼠标悬停在缩写上时,会显示一个提示框。 示例&#x…...
10-Oracle 23 ai Vector Search 概述和参数
一、Oracle AI Vector Search 概述 企业和个人都在尝试各种AI,使用客户端或是内部自己搭建集成大模型的终端,加速与大型语言模型(LLM)的结合,同时使用检索增强生成(Retrieval Augmented Generation &#…...
Golang——9、反射和文件操作
反射和文件操作 1、反射1.1、reflect.TypeOf()获取任意值的类型对象1.2、reflect.ValueOf()1.3、结构体反射 2、文件操作2.1、os.Open()打开文件2.2、方式一:使用Read()读取文件2.3、方式二:bufio读取文件2.4、方式三:os.ReadFile读取2.5、写…...
