-
理解对象
-
基本js数据类型
-
原始值与原始值包装类型
-
引用值(或者对象)是某个特定引用类型的实例。
-
ES中,引用类型是把数据和功能组织到一起的结构,经常被人错误地称作“类”。
-
从技术上讲js是一门面向对象语言,但ES缺少面向对象编程语言所具备的某些基本结构,包括类和接口。
-
引用类型有时也被称为对象定义。
-
引用类型和类并不是一个概念。
-
对象被认为是某个特定引用类型的实例。
- 新对象通过使用new操作符后跟一个构造函数(constructor)来创建。
let now = new Date()
-
函数也是一种引用类型;
Date
-
ES的Date类型参考了java.util.Date
-
let now = new Date()
-
在不给Date构造函数传参的情况下,创建的对象讲保存当前日期和时间。
-
要基于其他日期和时间创建日期对象,必须传入其毫秒表示(UNIX纪元1970年1月1日午夜之后的毫秒数)
-
ES提供2个辅助方法:
- Date.parse()
- Date.UTC()
-
Date.parse()方法接收一个表示日期的字符串参数,尝试将这个字符串转换为表示该日期的毫秒数。
- 支持的日期格式:
- “月/日/年”,“5/23/2019”;
- “月名 日, 年”,“May 23, 2019”;
- “周几 月名 日 年 时:分:秒 时区”,如"Tue May 23 2019 00:00:00 GMT-0700";
- ISO 8601扩展格式 “YYYY-MM-DDTHH:mm:ss.sssZ”,如"2019-05-23T00:00:00"(只适用于ES5的实现)
let someDate = new Date(Date.parse("May 23, 2019")); // 等价于 let someDate = new Date("May 23, 2019");
- 如果传给Date.parse()的字符串并不表示日期,则该方法返回NaN。如果直接把表示日期的字符串传给Date构造函数,则Date会在后台调用Date.parse()。
- 支持的日期格式:
-
不同的浏览器对Date类型的实现有很多问题。
-
Date.UTC()方法返回日期的毫秒表示,但使用的是跟Date.parse()不同的信息来生成这个值。
- 传给Date.UTC()的参数是年、零起点月数(1月是0,2月是1,…)、日(131)、时(023)、分、秒和毫秒。年和月是必要的参数。不提供日,默认为1日。其他参数默认为0.
// GMT时间2000年1月1日零点 let y2k = new Date(Date.UTC(2000, 0)); let allFives = new Date(Date.UTC(2005, 4, 5, 17, 55, 55))
- Date.UTC()也会被Date构造函数隐式调用,但是有个区别就是,这种情况下创建的是本地日期,不是GMT日期。
// 本地时间 let y2k = new Date(2000, 0); let allFive = new Date(2005, 4, 5, 17, 55, 55)
-
Date.now(),返回表示方法执行时日期和时间的毫秒数。
let start = Date.now()
-
继承的方法
- Date重写了toLocaleString(): 返回与浏览器运行的本地环境一致的日期和时间
- toString():返回带时区信息的日期和时间
- valueOf():根本就不返回字符串,这个方法被重写后返回的是日期的毫秒表示
- 重写后的返回值不一样
-
日期格式转化方法
- toDateString()显示日期中的周几、月、日、年(格式特定于实现)
- toTimeString()显示日期中的时、分、秒、时区(格式特定于实现)
- toLocaleDateString()显示日期中的周几、月日、年(格式特定于实现和地区)
- toLocaleTimeString()显示日期的时、分、秒(格式特定于实现和地区)
- toUTCString()显示完整的UTC日期(格式特定于实现)
-
日期/时间组件方法
- more