javascript基础拾遗(六)

时间:2020-12-22 23:42:55

1.Date内置对象
获取系统时间

var now = new Date()
    console.log(now)
    console.log(now.getDate())
    console.log(now.getDay())
    console.log(now.getMilliseconds())

2.构造Date对象

var now = new Date(2017, 12, 6)
    console.log(now)
    console.log(now.getDate())
    console.log(now.getDay())
    console.log(now.getMilliseconds())

需要注意的是,javascript的月份为0-11,因此,var now = new Date(2017, 12, 6)的时间为2018-01-06

3.RegExp正则
正则声明的两种方式

var re1 = /ABC\-001/;
    var re2 = new RegExp("ABC\\-001")
    console.log(re1)
    console.log(re2)

示例如下:

var re1 = /^\d{3}-\d{3,8}$/;
    console.log(re1.test('010-12345'))
    console.log(re1.test('010-1234x'))
    console.log(re1.test('010 12345'))

运行结果: true false false
正则表达式的作用如下:
1)切分字符串
固定分隔符切分
'a b c'.split(' ');//['a','b',' ','c']

正则规则切分
'a b c'.split(/\s+/);//['a','b','c']

多个空格或逗号切分
'a,b, c'.split(/[\s,]+/)
2)提取子串

 var re1 = /^(\d{3})-(\d{3,8})$/;
 console.log(re1.exec('010-12345'))

运行结果:['010-12345','010','12345']
括号()表示要提取的分组
3)贪婪匹配,非贪婪匹配
贪婪匹配匹配尽可能多的字符

var re1 = /^(\d+)(0*)$/;
console.log(re1.exec('102300'))

运行结果:["102300", "102300", ""]
非贪婪匹配匹配尽可能少的字符

var re1 = /^(\d+?)(0*)$/;
console.log(re1.exec('102300'))

运行结果:["102300","1023","00"]
4)全局匹配
var r1 = /test/g;
// 等价于:
var r2 = new RegExp('test', 'g');
示例:

var re1 = /^(\d+?)(0*)$/;
var s = 'JavaScript, VBScript, JScript and ECMAScript';
var re=/[a-zA-Z]+Script/g;
console.log(re.exec(s));
console.log(re.lastIndex);
console.log(re.exec(s));
console.log(re.lastIndex);

运行结果:
[JavaScript]
10
[VBScript]
20
全局匹配类似搜索,不能使用/^...$/
正则表达式i,表示忽略大小写,m,表示执行多行匹配

4.JSON对象
JSON是一种数据交换格式
1)可以包含以下几种数据类型:
number:数值
boolean:true/false
string:字符串
null:空对象
array:数组
object:对象{}
示例如下:

var language = {
        name: 'javascript',
        score: 9.0,
        popular:true
    }
    console.log(language)
    var s = JSON.stringify(language)
    console.log(s)

运行结果:
{name: "javascript", score: 9, popular: true}
{"name":"javascript","score":9,"popular":true}

2)JSON序列化
JSON.stringify(json_obj, null, ' ');
将JSON对象序列化成JSON格式字符串
第一个参数:要序列化的对象
第二个参数:要输出的属性,或者属性处理函数
如['name'],那么只会输出name属性
或者函数,将string类型的value转大写
JSON.stringify(json_obj, convert, ' ');
function convert(key, value) {
if (typeof value === 'string') {
return value.toUpperCase();
}
return value;
}

第三个参数:属性前添加空格,可以使输出更美观

也可以自定义序列化方法

var language = {
        name: 'javascript',
        score: 9.0,
        popular:true,
        toJSON: function(){
            return {
                'Name': this.age'Score': this.score
            }
        }
    }
    console.log(language)
    var s = JSON.stringify(language)
    console.log(s)

3)JSON反序列化
将JSON格式字符串,转化为一个JavaScript对象
JSON.parse('{"name":"小明","age":14}'); // Object {name: '小明', age: 14}