《JavaScript 高级程序设计》学习总结五(3)

引言:前面两节我对 Object 与数组Array 及其方法进行了总结,篇幅很长,总结完后我感觉还是要多开几节来对第五章进行分节总结,不然排版的知识点看着的确是有些混乱。

     总结的学习的确是很痛苦并快乐的,痛苦在于知识点真的很多,总结起来很累,如何选取精简的内容,怎么排版都是考虑之中。而快乐之处在于,总结知识点往往能让我静下来重新看待这些问题,然后温故而知新。总之,学习的道路是没有捷径的。这期间我也意识到,以前我以为看完一本书就是目标,往往那时候一本书看完自己是学不到什么的,如今恍然大悟,其实,我们学习的出发点不是看完一本书或者是看书,而是从书本里学习到知识,那才是我们看书的目的。

Date类型:

  ECMAScript 中的Date 类型是在早起的 java .util.Dtae类型上构建的,所以 Date类型也是用“国际协调时间”,1970年1月1日 开始经过的毫秒数来保存日期。

创建Date对象:var now =new Date();

在调用 Date 构造函数而不传参的情况下,新创建的对象自动获得当前时间,如果想要获得指定时间,必须传递毫秒数(从1970年1月1日 开始计算的毫秒数),这样的方法十分麻烦。所以为了简化这一过程,ECMAScript 创建了两个方法:Date.parse( ) 和 Date.UTC( )。

  Date.parse() 接收一个表示日期的字符串参数,然后根据这个参数返回相应的毫秒数。ECMA-262 没有定义 这个函数需要哪种固定的日期格式,所以这个方法的结果会因实际情况而异。

如果传入的参数字符串不能表示时间,则会返回NaN。 但是我们在 Date构造函数传递时间参数,那么在回台也会自动调用 Date.parse()。

例如: var now= new Date("2018/8/8");

  Date.UTC(): 方法同样也返回表示日期的毫秒数,但是它与Date.parse() 构建值时使用不同的信息,Date.UTC () 的参数分别是年份,基于0的月份(一月是0 ,二月是1 以此类推)。月份是 1——31,小时是 1——23.秒以毫秒数。在这些参数中只有年数和月份是必须的。如果没有设定天数则假设天数为1 。其他参数省略的话,则默认为 0 。

举个例子:var now=new Date(Date.UTC(2018,0,1));   //Mon Jan 01 2018 08:00:00 GMT+0800  可以看到 0 是1月。

PS:ECMAScript 5 添加了Date.now():方法,返回调用这个方法时的日期和时间的毫秒数。所以我们可以在某段代码开始时调用这个函数。结束时有调用这个函数,然后二者相减就可以得出函数运行时间了。支持这个方法的函数有 IE9+、Firefox 3+、Safari3+、Opera10.5、和Chrome。

而不支持的浏览器可以用:var start =+new Date(); (使用+ 操作符转成字符串来操作。)

Date类型的继承的方法:

与其他类型一样,Date类型也重写了 toLocaleString()、toString()、和valueOf() 方法。但这些方法返回的值与其他类型不同。 Date类型的 toLocaleString()会按照与浏览器设置地区相适应的格式返回日期时间。

而其 toString() 则通常返回带有时区信息的日期和时间。(我个人理解:其实说那么多,toLocalseString() 不就是我们前面说过的根据环境返回值么)

至于 valueOf() 则不返回字符串,而是返回日期的毫秒数,例如:

var now=new Date(Date.UTC(2018,1,1));
alert(now.valueOf());// 1517443200000

 日期的格式化方法:

Date类型还有一些专门用来将日期格式化的方法:

1、toDateString()——以特定格式显示时间(星期、月、日、年)。

2、toTimeString()——以特定格式显示时间(时、分、秒和时区)。

3、toLocaleString()——以特定时区显示时间(星期、月、日、年)。

4、toLocalseTIme()——以特定时区显示时间(时、分、秒)。

5、toUTCString()——以特定格式显示UTC时间。

非常让人值得吐槽的是这些方法的输出也和浏览器而异。所以显示的内容会因为浏览器不同而不一样。

日期 / 时间组件方法:

到目前为止,剩下还未介绍的 Date 类型的方法(如下表所示) ,都是直接取得和设置日期值中特
定部分的方法了。 需要注意的是, UTC 日期指的是在没有时区偏差的情况下 (将日期转换为 GMT 时间)
的日期值。

方 法  说 明
getTime()
返回表示日期的毫秒数;与 valueOf() 方法返回的值相同

setTime( 毫秒 )  以毫秒数设置日期,会改变整个日期

getFullYear()
取得4位数的年份(如2007而非仅07)

getUTCFullYear()返回UTC日期的4位数年份

setFullYear( 年 )  设置日期的年份。传入的年份值必须是4位数字(如2007而非仅07)

setUTCFullYear( 年 )  设置UTC日期的年份。传入的年份值必须是4位数字(如2007而非仅07)

getMonth()
返回日期中的月份,其中0表示一月,11表示十二月

getUTCMonth()
返回UTC日期中的月份,其中0表示一月,11表示十二月

setMonth( 月 )  设置日期的月份。传入的月份值必须大于0,超过11则增加年份

setUTCMonth( 月 )  设置UTC日期的月份。传入的月份值必须大于0,超过11则增加年份

getDate()
返回日期月份中的天数(1到31)

getUTCDate()
返回UTC日期月份中的天数(1到31)

setDate( 日 )  设置日期月份中的天数。如果传入的值超过了该月中应有的天数,则增加月份

setUTCDate( 日 )  设置UTC日期月份中的天数。如果传入的值超过了该月中应有的天数,则增加月份

getDay()
返回日期中星期的星期几(其中0表示星期日,6表示星期六)

getUTCDay()
返回UTC日期中星期的星期几(其中0表示星期日,6表示星期六)

getHours()
返回日期中的小时数(0到23)

getUTCHours()
返回UTC日期中的小时数(0到23)

setHours( 时 )  设置日期中的小时数。传入的值超过了23则增加月份中的天数

setUTCHours( 时 )  设置UTC日期中的小时数。传入的值超过了23则增加月份中的天数

getMinutes()
返回日期中的分钟数(0到59)

getUTCMinutes()
返回UTC日期中的分钟数(0到59)

setMinutes( 分 )  设置日期中的分钟数。传入的值超过59则增加小时数

setUTCMinutes( 分 )  设置UTC日期中的分钟数。传入的值超过59则增加小时数

getSeconds()
返回日期中的秒数(0到59)

getUTCSeconds()
返回UTC日期中的秒数(0到59)

setSeconds( 秒 )  设置日期中的秒数。传入的值超过了59会增加分钟数

setUTCSeconds( 秒 )  设置UTC日期中的秒数。传入的值超过了59会增加分钟数

getMilliseconds()
返回日期中的毫秒数

getUTCMilliseconds()
返回UTC日期中的毫秒数

setMilliseconds( 毫秒 )  设置日期中的毫秒数

setUTCMilliseconds( 毫秒 )  设置UTC日期中的毫秒数

getTimezoneOffset() 返回本地时间与UTC时间相差的分钟数。例如,美国东部标准时间返回300。在某 地进入夏令时的情况下,这个值会有所变化

-------------------------------------------------------------------------------------------------本章节完---------------------------------------------------------------------------------------------

这一章节着重总结了 引用类型中Date 类型的属性方法。

下章节预告:正则表达式,与 function 类型。

原文地址:https://www.cnblogs.com/wxhhts/p/9436246.html

时间: 2024-10-11 00:47:36

《JavaScript 高级程序设计》学习总结五(3)的相关文章

JavaScript高级程序设计学习笔记--基本概念

1.语句 ECMAScript中的语句以一个分号结尾:如果省略分号,则由解析器确定语句的结尾,如下例所示: var sum=a+b //即使没有分号也是有效的语句--推荐 var diff=a-b; //有效的语句--推荐 虽然语句结尾的分号不是必需的,但我们建议任何时候都不要省略它.两个原因:1.加上分号可以避免很多错误 2.加上分号也会在某些情况下增进代码的性能,因为这样解析器就不必再花时间 推测应该在哪里插入分号了. 2.变量 var message="hi"; 像这样初始化变量

JavaScript高级程序设计学习笔记--错误处理与调试

try-catch语句 只要代码中包含finally子句,则无论try或catch语句块中包含什么代码--甚至return语句,都不会阻止finally子句的执行,来看下面这个函数: function testFinally(){ try{ return 2; }catch(error){ return 1; }finally{ return 0; } } 调用这个函数会返回0(PS:但我实际执行的时候会先返回0,再返回2) 抛出错误 与try-catch语句相配的还有一个throw操作符,用于

JavaScript高级程序设计学习笔记--面向对象程序设计

工厂模式 虽然Object构造函数或对象字面量都可以用来创建单个对象,但这些方式有个明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码.为解决这个问题,人们开始使用 工厂模式的一种变体. function createPerson(name,age,job){ var o=new Object(); o.name=name; o.age=age; o.job=job; o.sayName=function(){ alert(this.name); }; return o; } var

Javascript高级程序设计学习笔记

3. 基本概念 基本数据类型:Undefined,Null,Boolean,Number,String. 复杂数据类型:Object. 3.6 语句 switch比较值时用的是全等运算符 “===” ,因此不会进行类型转换.例如 “10” 不等于10. 3.7 函数 ECMAScript函数不介意传递进来多少个参数,也不在乎参数的类型.即使定义的函数只接受两个参数,在调用的时候也可以传递任意多个或者0个.因为ECMAScript的参数在内部是用一个数组表示的,在函数体内部可以通过argument

JavaScript高级程序设计学习笔记--高级技巧

惰性载入函数 因为浏览器之间行为的差异,多数JavaScript代码包含了大量的if语句,将执行引导到正确的代码中,看看下面来自上一章的createXHR()函数. function createXHR(){ if (typeof XMLHttpRequest != "undefined"){ return new XMLHttpRequest(); } else if (typeof ActiveXObject != "undefined"){ if (typeo

JavaScript高级程序设计学习笔记--DOM

DOM(文档对象模型)是针对HTML和XML文档的一个API(应用程序接口). Document类型 文档的子节点 虽然DOM标准规定Document节点的子节点可以是DocumentType,Element,ProcessingInstruction或Comment,但还有两个内置的访问其子节点的快捷方式.第一个就是documnetElement属性,该属性始终指向HTML页面中的<html>元素.另一个就是通过childNodes列表访问文档元素,但通过documentElement属性则

JavaScript高级程序设计学习笔记--BOM

window对象 BOM的核心对象是window,它表示浏览器的一个实例.在浏览器中,window对象有双重角色,它既是通过JavaScript访问浏览器窗口的一个接口,又是ECMScript规定的Global对象. 全局作用域 由于window对象同时扮演着ECMAScript中Global对象的角色,因此所有在全局作用域中声明的变量.函数都会变成window对象的属性和方法.来看下面的例子: var age=29; function sayAge(){ alert(this.age); }

《javascript高级程序设计》第五章知识点总结

第五章知识点总结 1.object类型 访问对象的方法:①点表示法        (people.name) :      ②方括号表示法         (people[name]). 常用方法:hasOwnProperty()         用于检查给定属性在当前对象实例中是否存在 isPrototypeOf()              用于检测传入的对象是否传入对象原型 toString()                        返回对象的字符串表示 valueOf()    

JavaScript高级程序设计学习笔记--引用类型

Object类型 对象字面量表示法: var person={ name:"Nicholas", age:29, 5:true }; 这人例子会创建一个对象,包含三个属性:name,age和5.但这里的数值属性名会自动转换为字符串. 对象属性的访问:点表示法和方括号语法 alert(person["name"]); // "Nicholas" alert(person.name); // "Nicholas" 从功能上看,这两

JavaScript高级程序设计学习(四)之引用类型

在javascript中也是有引用类型的,java同样如此. javascript常见也比较常用的引用类型就熟Object和Array. 一个对象和一个数组,这个在前后端分离开发中也用的最多.比如ajax传参,有时我不仅仅只是需要一个参数,例如添加方法,传的是一个对象,对象存在属性.在java中对象也可以说类.因为类存在属性,例如人类,他的属性有身高,体重,姓名,年龄,性别等.而js对象,也可以这样,比如车,它可以有品牌,颜色,造型等等. js对象可以做什么呢?同java对象有什么区别呢? 第一