JavaScript学习笔记(三) JavaScript标准库


所有坚忍不拔的努力迟早会取得报酬的


包装对象

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上发布不了的干货;有问题也可以在公众号上留言
在这里插入图片描述

点个关注是对博主最大的支持

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值