javascript 高级程序设计 七

时间:2021-02-22 16:53:58

引言:好几天没有写随笔了,项目有点紧,恰好今天项目遇到了比较大阻塞,就只好来写一篇随笔来压压惊。

1、Date类型

  创建一个新的Date:(除了new Date()外)

    var someDate = new Date(Date.parse('May 25,2004'));//传入的格式有:6/13/2004或May 25,2004或YYYY-MM-DDTHH:mm:ss.sssZ

    var someDate = new Date(Date.UTC(2005,0,5,17,55,55));//GMT时间格式中月份是(0~11)的

  要想比较两个Date的大小:(valueOf()方法)

    var date1 = new Date(2007,0,1);

    var date2 = new Date(2007,1,1);

    alert(date1 < date2);//alert中的所有对象都相当于先调用这个对象的valueOf()方法---true

    所以得到valueOf()方法在Date中是返回从传入参数那一天算起到1970年1月1日(午夜)零时的毫秒值。

2、RegExp类型

  var pattern1 = /at/g;            //g:表示全局匹配,而不是在发现第一个匹配项时立即停止。---匹配字符串中所有的"at"

  var pattern2 = /[bc]at/i;       //i :表示不区分大小写模式,即在匹配字符时忽略与字符串的大小写---匹配第一个bat或者cat,不区分大小写

  var pattern3 = /.at/gi;    //匹配所有改at结尾的3个字符的组合,不区分大小写

  ---------------------------------//RegExp中除了g,i两个flags以外,还有m:表示多行模式,即在到达一行文本末端时还会继续寻找下一行中的匹配项。

  正则表达式字面量始终会共享同一个RegExp实例,而使用构造函数创建的每一个新的RegExp实例都是一个新的实例。例子如下:

  

var re = null;
var i;
for(i = 0;i < 4;i ++){
re = /cat/g;
re.test('catismymarst');//它只会匹配一次,因为下一次匹配就会从下标为3开始
}
for(i = 0;i < 4;i++){
re = new RegExp('cat','g');
re.test('catismymarst');//它每次都会从新创建RegExp对象,所以每次调用test都会从头开始匹配
}