JavaScript 入门(02)常用对象(date-regexp-json)

一、时间Date

对象具体类型判断的通用方法:d instanceof Date

1、构造函数和三个方法

//构造器
var d = new Date();
var d = new Date(454545545);
var d = new Date(2018, 11, 24, 10, 33, 30, 0);
var d = new Date("2015-06-24T19:49:22.875+08:00");
//3个方法
var d = Date.parse('2018-01-01'); //返回毫秒值
var d = Date.UTC(2005,4,5); //返回毫秒值
var d = Date.now(); //返回毫秒值

2、四种日期字符串格式

var d = new Date("2018-02-19T12:00:00"); //标准日期格式
var d = new Date("2018-02-19"); // 短日期 最好不要省略0
var d = new Date("Feb 19 2018");//长日期
var d = new Date("Mon Feb 19 2018 06:55:23 GMT+0200 (W. Europe Standard Time)");

3、几个toString方法

var d = new Date();
d.toLocaleString();//完整本地时间
d.toUTCString();//完整标准时间
d.toDateString();//年月日
d.toTimeString();//时分秒

4、时间获取和设置方法

  • 外国的月份是0到11月,分别对应我们的1到12
getFullYear()    //获取四位的年(yyyy)
getMonth()    //获取月(0-11)
getDate()    //以数值返回天(1-31)
getHours()    //获取小时(0-23)
getMinutes()    //获取分(0-59)
getSeconds()    //获取秒(0-59)
getMilliseconds()    //获取毫秒(0-999)

getDay()    //以数值获取周名(0-6)
getTime()    //获取时间(从 1970 年 1 月 1 日至今)和 valueOf都是返回毫秒值

1.时间戳的时区无关性:本质就是一个时间的差值所以和时区是无关的
2.时区的转换借助时间戳是很方便的,直接存入时间戳取出来用的时候就会自动转换为当地的时间


二、正则RegExp

1、正则基础

  • 修饰符
g(全局匹配)、i(忽略大小写)、m(多行模式)
  • 括号
[abc]    查找方括号之间的任何字符。
[^abc]    查找任何不在方括号之间的字符。
[0-9]    查找任何从 09 的数字。
(red|blue|green)    查找任何指定的选项,就是一个或的逻辑。
  • 元字符
.    查找单个字符,除了换行和行结束符。
\w    查找单词字符。
\W    查找非单词字符。
\d    查找数字。
\s    查找空白字符。
\b    匹配单词边界。
  • 量词
n+    匹配任何包含至少一个 n 的字符串。
n*    匹配任何包含零个或多个 n 的字符串。
n?    匹配任何包含零个或一个 n 的字符串。
n{X}    匹配包含 X 个 n 的序列的字符串。
n{X,Y}    匹配包含 XY 个 n 的序列的字符串。
n{X,}    匹配包含至少 X 个 n 的序列的字符串。
  • 首尾匹配
n$    匹配任何结尾为 n 的字符串。
^n    匹配任何开头为 n 的字符串。
string支持正则的方法:search、replace、match、split

2、正则对象

  • 字面量的元字符转义只要一个 \ 而构造函数要\\
var pattern1 = /at/g;
var pattern2 = new RegExp("[bc]at", "i");

3、对象属性

  • global : RegExp 对象是否具有标志 g
  • ignoreCase :RegExp 对象是否具有标志 i
  • multiline : RegExp 对象是否具有标志 m
  • lastIndex : 标示开始下一次匹配的字符位置
  • source : 正则表达式的源文本
    在这里插入图片描述

4、对象方法

  • 方法:test方法、exec方法、compile方法
exec方法说明
  • exec 方法返回的是数组,其中含两个额外属性,index 表示匹配项在字符串中的位置,input表示测试的字符串,如果正则中使用括号进行分组捕获的话,使用exec 方法就可以获取分组
var text = "mom and dad and baby"; 
var pattern = /mom( and dad( and baby)?)?/gi; 
var matches = pattern.exec(text); 
alert(matches.index);     // 0 
alert(matches.input);     // "mom and dad and baby" 
alert(matches[0]);        // "mom and dad and baby" 
alert(matches[1]);        // " and dad and baby" 
alert(matches[2]);        // " and baby" 
  • exec方法的另一个用途就是进行全局匹配的时候调用一次exec方法就匹配一次,这样就能将所有的匹配项全部获取出来,全局匹配的时候记得不能使用^...$
    在这里插入图片描述

5、构造函数属性

  • RegExp.$1、RegExp.$2...RegExp.$9就是用来存储相应的捕获组的
var r= /^(\d{4})-(\d{1,2})-(\d{1,2})$/; //正则表达式 匹配出生日期(简单匹配)    
r.exec('1985-10-15');
s1=RegExp.$1;
s2=RegExp.$2;
s3=RegExp.$3;
alert(s1+" "+s2+" "+s3)//结果为1985 10 15
var text = "this has been a short summer";
var pattern = /(.)hort/g;
if (pattern.test(text)){
    alert(RegExp.input);            // this has been a short summer
    alert(RegExp.leftContext);      // this has been a
    alert(RegExp.rightContext);     // summer
    alert(RegExp.lastMatch);        // short
    alert(RegExp.lastParen);        // s
    alert(RegExp.multiline);        // false IE不支持
}

三、JSON

  • JSON 是一种数据传输的格式,用于前后端的数据传输,正逐渐取代 xml 成为主流

1、json里的数据类型

  • number:和JavaScript的number完全一致;
  • boolean:就是JavaScript的true或false;
  • string:就是JavaScript的string;
  • null:就是JavaScript的null;
  • array:就是JavaScript的Array表示方式[...]
  • object:就是JavaScript的{ ... }表示方式。

2、序列化和反序列化

基础用法
  • JSON 串和 js 对象的相互转换:stringify (序列化)parse (反序列化)
  • JSON.stringify() 函数将把任何日期转换为字符串,将从JS对象删除函数(包括键和值)
  • 示例代码输出前者是json串,后者是js对象字面量,直观的区别在于json的key加了双引号
var jsonString = JSON.stringify({
    make: "McLaren",
    model: "MP4-12C",
    miles: 5023
});
var car = JSON.parse(jsonString);
console.log(jsonString);
console.log(car);

在这里插入图片描述

扩展用法
  • JSON.parse()可以接收一个函数,用来转换解析出的属性
var obj = JSON.parse('{"name":"小明","age":14}', function (key, value) {
    if (key === 'name') {
        return value + '同学';
    }
    return value;
});
console.log(JSON.stringify(obj)); // {name: '小明同学', age: 14}
  • stringify 方法输出的字串格式化
JSON.stringify(xiaoming, null, '  ');
  • stringify 筛选键值
JSON.stringify(xiaoming, ['name', 'skills'], '  ');
  • stringify 指定处理函数
function convert(key, value) {
    if (typeof value === 'string') {
        return value.toUpperCase();
    }
    return value;
}

JSON.stringify(xiaoming, convert, '  ');
  • toJSON 精确指定序列化的形式
var xiaoming = {
    name: '小明',
    age: 14,
    gender: true,
    height: 1.65,
    grade: null,
    'middle-school': '\"W3C\" Middle School',
    skills: ['JavaScript', 'Java', 'Python', 'Lisp'],
    toJSON: function () {
        return { // 只输出name和age,并且改变了key:
            'Name': this.name,
            'Age': this.age
        };
    }
};

JSON.stringify(xiaoming); // '{"Name":"小明","Age":14}'
发布了153 篇原创文章 · 获赞 51 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/stanwuc/article/details/103729665