所有坚忍不拔的努力迟早会取得报酬的
包装对象
JavaScript中也存在int integer,string String,后者就是前者的包装对象
var a1=10;
var a2=new Number(10); //new 建立number的包装对象
var b1=str;
var b2=new String('str'); //new 建立String的包装对象
包装对象和普通对象不同点在于类型上
var a1=10;
var a2=new Number(10); //number的包装对象
var b1='str';
var b2=new String('str'); //String的包装对象
console.log(a1+" "+a2); //10 10
console.log(typeof a1+' '+typeof a2); //number object
包装对象使用较少,能不用就不用;
Object
Object对象是所有对象的父类,即其他对象都是Object对象的实例,能调用Object对象的实例方法
//new 一个object对象
var obj=new Object();
//tostring方法是object对象的实例方法,所有实例均可调用
obj.toString(); //"[object Object]"
// 定义一个object实例方法
Object.prototype.print = function(){
console.log(this);
}
obj.print(); //{}
Date
JavaScript中,Date对象用于所有日期和时间
var time = new Date();
console.log(time); //时间 Tue Aug 04 2020 09:52:31 GMT+0800 (中国标准时间)
console.log(time.getFullYear()); //年份 2020
console.log(time.getMonth()); // 月份 7 月份范围是0~11,7表示八月
console.log(time.getDate()); // 天 4 表示4号
console.log(time.getDay()); // 星期 2 表示星期二
console.log(time.getHours()); // 小时 9 上午9点
console.log(time.getMinutes()); // 分钟 5
console.log(time.getSeconds()); // 秒 31
console.log(time.getMilliseconds()); // 毫秒数 887
console.log(time.getTime()); //时间戳 1596505951887 以number形式表示
创建Date对象
/*
new Date 创建Date对象
*/
//所有参数都可以缺省,也可以按自己需求添加
var d = new Date();
var d = new Date(2019);
var d = new Date(2019,10);
/*
使用时间戳创建,时间戳表示从1970-1-1零点整GMT时区开始的一刻到现在的毫秒数
*/
var d = new Date(1596505951887);
d; // Tue Aug 04 2020 09:52:31 GMT+0800 (中国标准时间)
RegExp
RegExp是JavaScript中的正则表达式,语法和python java相差不大
python 正则表达式 JavaScript 正则表达式常用方法
方法 | 作用 |
---|---|
exec | 在字符串中进行查找RegExp方法,返回匹配到的数组(无内容则为空) |
test | 测试字符串是否满足匹配条件,满足返回true否则返回false |
match | 在字符串中进行查找的String方法,返回匹配到的数组(无内容则为空) |
matchAll | 在字符串中进行查找的String方法,返回一个迭代器(Iterator) |
search | 在字符串中匹配的String方法,返回匹配到的索引或者-1 |
replace | 在字符串中查找的String方法,在查找到后替换掉匹配到的字串 |
split | 使用正则表达式或String分割字符串,并将分割好的结果存到数组中 |
/*
创建正则表达式
*/
// /正则表达式/ 两个/将正则表达式包围,如果正则表达式中也有/则转义
var re1= /\d/;
// new RegExp('正则表达式')创建 \d匹配数字 需要先加\对\d中的\转义
var re2=new RegExp('\\d');
console.log(re1+' '+re2); // /\d/ /\d/
匹配字符串
var re1= /\d/;
var re2=new RegExp('\\d');
//RegExp 对象的test方法测试目标字符串是否满足条件
console.log(re1.test(123)); //true
console.log(re2.test(123)); //true
//RegExp 对象的exec方法返回匹配的结果
console.log(re1.exec(123)); //["1", index: 0, input: "123", groups: undefined]
console.log(re2.exec(123)); //["1", index: 0, input: "123", groups: undefined]
正则加split切分字符串
var a='a b c d';
console.log(a.split(' ')); //["a", "b", "", "c", "", "", "d"]
// \s匹配空格 +表示至少一个
console.log(a.split(/\s+/));["a", "b", "c", "d"]
正则表达式提取字串,()括起来即为需要提取的子串
//提取手机号的前三位
var re=/^(\d{3})/ ;
console.log(re.exec('138 8888 8888'));// ["138", index: 0, input: "138 8888 8888", groups: undefined]
JavaScript中*、 +、 {}默认使用贪婪,在正则后加上?则为非贪婪;
var re=/\d+/ ;
var re1=/\d*/ ;
var re2=/\d+?/ ; //使用较多
var re3=/\d*?/ ; //匹配出来是空串 '' 一般不用
console.log(re.exec('138-8888-8888'));// '138'
console.log(re1.exec('138-8888-8888'));// '138'
console.log(re2.exec('138-8888-8888'));// '1'
console.log(re3.exec('138-8888-8888'));// ''
前面使用的正则表达式匹配到结果就停止,无法匹配到全部结果;g标志通过更新lastIndex来实现全局匹配
var re=/java/g;
//var re=new RegExp('java','g'); //两种定义方式效果一样
var str='java,javascript';
console.log(re.exec(str)); //java index=0
console.log(re.lastIndex); //4
console.log(re.exec(str)); //java index=5
console.log(re.lastIndex); //9
JSON
JSON(JavaScript Object Notation)是一种非常流行的数据交换格式,JavaScript中内置JSON解析可以轻松调用
序列化
将JavaScript对象变成JSON格式的字符串
var person={
name:'Maria',
sex:'女',
age:'20',
hobby:'typing code',
}
var json=JSON.stringify(person);
console.log(json); //{"name":"Maria","sex":"女","age":"20","hobby":"typing code"}
对输出进行美化
json=JSON.stringify(person, null, ' ');
console.log(json);
/*{
"name": "Maria",
"sex": "女",
"age": "20",
"hobby": "typing code"
}*/
对输出进行控制
//传入需要显示的数组
json=JSON.stringify(person,['name','sex'], ' ');
console.log(json);
/*{
"name": "Maria",
"sex": "女"
}*/
//传入函数对对象中的key-value进行控制
function fun(key,value){
//将属性长度大于三的值变为long value
if(value.length>3){
return 'long value';
}
return value;
}
json=JSON.stringify(person,fun, ' ');
console.log(json);
/*{
"name": "long value",
"sex": "女",
"age": "20",
"hobby": "long value"
}*/
如果需要更精确的序列化某对象,定义一个toJSON方法即可
var person={
name:'Maria',
sex:'女',
age:'20',
hobby:'typing code',
toJSON:function(){
return {
name:this.name,
sex:'female',
age:20
}
}
}
console.log(JSON.stringify(person));//{"name":"Maria","sex":"female","age":20}
反序列化
与序列化相反,JSON.parse负责将JSON字符串转化为JavaScript对象
var person=JSON.parse('{"name":"Maria","sex":"female","age":20}')
console.log(person); // {name: "Maria", sex: "female", age: 20}
console.log(person.name);// Maria
JSON.parse也可接受函数对JSON进行控制
var person=JSON.parse('{"name":"Maria","sex":"female","age":20}',function(key,value)
{
//将属性长度大于三的值变为long value
if(value.length>3){
return 'long value';
}
return value;
}
)
console.log(person); //{name: "long value", sex: "long value", age: 20
console.log(person.name) //long value
最后
可以关注一下我的公众号,最近开始写公众号,我会在上面分享一些资源和发布一些csdn上发布不了的干货;有问题也可以在公众号上留言
点个关注是对博主最大的支持