JavaScript第八讲:日期,Math,自定义对象

2024-06-04 02:52

本文主要是介绍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.LN2Math.LNEMath.LOG2EMath.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,自定义对象的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1028864

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

Java中Redisson 的原理深度解析

《Java中Redisson的原理深度解析》Redisson是一个高性能的Redis客户端,它通过将Redis数据结构映射为Java对象和分布式对象,实现了在Java应用中方便地使用Redis,本文... 目录前言一、核心设计理念二、核心架构与通信层1. 基于 Netty 的异步非阻塞通信2. 编解码器三、

SpringBoot基于注解实现数据库字段回填的完整方案

《SpringBoot基于注解实现数据库字段回填的完整方案》这篇文章主要为大家详细介绍了SpringBoot如何基于注解实现数据库字段回填的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以了解... 目录数据库表pom.XMLRelationFieldRelationFieldMapping基础的一些代

一篇文章彻底搞懂macOS如何决定java环境

《一篇文章彻底搞懂macOS如何决定java环境》MacOS作为一个功能强大的操作系统,为开发者提供了丰富的开发工具和框架,下面:本文主要介绍macOS如何决定java环境的相关资料,文中通过代码... 目录方法一:使用 which命令方法二:使用 Java_home工具(Apple 官方推荐)那问题来了,

Java HashMap的底层实现原理深度解析

《JavaHashMap的底层实现原理深度解析》HashMap基于数组+链表+红黑树结构,通过哈希算法和扩容机制优化性能,负载因子与树化阈值平衡效率,是Java开发必备的高效数据结构,本文给大家介绍... 目录一、概述:HashMap的宏观结构二、核心数据结构解析1. 数组(桶数组)2. 链表节点(Node

Java AOP面向切面编程的概念和实现方式

《JavaAOP面向切面编程的概念和实现方式》AOP是面向切面编程,通过动态代理将横切关注点(如日志、事务)与核心业务逻辑分离,提升代码复用性和可维护性,本文给大家介绍JavaAOP面向切面编程的概... 目录一、AOP 是什么?二、AOP 的核心概念与实现方式核心概念实现方式三、Spring AOP 的关

详解SpringBoot+Ehcache使用示例

《详解SpringBoot+Ehcache使用示例》本文介绍了SpringBoot中配置Ehcache、自定义get/set方式,并实际使用缓存的过程,文中通过示例代码介绍的非常详细,对大家的学习或者... 目录摘要概念内存与磁盘持久化存储:配置灵活性:编码示例引入依赖:配置ehcache.XML文件:配置

Java 虚拟线程的创建与使用深度解析

《Java虚拟线程的创建与使用深度解析》虚拟线程是Java19中以预览特性形式引入,Java21起正式发布的轻量级线程,本文给大家介绍Java虚拟线程的创建与使用,感兴趣的朋友一起看看吧... 目录一、虚拟线程简介1.1 什么是虚拟线程?1.2 为什么需要虚拟线程?二、虚拟线程与平台线程对比代码对比示例:三

Java中的.close()举例详解

《Java中的.close()举例详解》.close()方法只适用于通过window.open()打开的弹出窗口,对于浏览器的主窗口,如果没有得到用户允许是不能关闭的,:本文主要介绍Java中的.... 目录当你遇到以下三种情况时,一定要记得使用 .close():用法作用举例如何判断代码中的 input

Spring Gateway动态路由实现方案

《SpringGateway动态路由实现方案》本文主要介绍了SpringGateway动态路由实现方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随... 目录前沿何为路由RouteDefinitionRouteLocator工作流程动态路由实现尾巴前沿S