文章目录
1.字符串对象
包装对象:目的是为了让原始类型的数据像引用类型数据,具有属性和方法,一共有三种包装对象,String、Number、Boolean
- new String() 将数据转为字符串,返回对象
- String() 将数据转为字符串,返回字符串
var str1 = '1'; //字面量
var str2 = new String(1); //构造函数
var str3 = String(1);//'1'
(1)转义字符 \
’ 将特殊意义的引号转义为普通引号
\n 将普通的字符n转义为换行符
\t 将普通的字符t转义为制表符(tab键效果)
var str = 'It\'s a dog'; //It's a dog a
var str2 = 'a\nd'; // \n 换行
var str3 = 'a\tb'; // \t 制表符 tab键
//练习:打印出 'C:\users\web'
console.log('C:\\users\\web');
//C:/users/web
(2)API
- length 获取字符串的长度
var str = 'erya正在玩dangang';
console.log( str.length );//14
- charAt(下标) 获取下标对应的字符,也可以使用数组形式 字符串[下标]
console.log( str.charAt(0),str[0] );//e e
- indexOf() 查看是否含有某个字符串,返回第一次出现的下标,找不到返回-1
- lastIndexOf() 查看是否含有某个字符串,返回最后一次出现的下标,找不到返回-1
var str = 'javascript';
//找第1个
console.log( str.indexOf('a') );//1
//找最后1个
console.log( str.lastIndexOf('a') );//3
- toUpperCase() 英文字母转大写
- toLowerCase() 英文字母转小写
var str = 'JavaScript';
//转大写
console.log( str.toUpperCase() );//JAVASCRIPT
//转小写
console.log( str.toLowerCase() );//javascript
- slice(start, end) 截取字符串,start开始的下标,end结束的下标,不包含end,如果end为空会截取到最后,如果是负数表示倒数,返回截取到的字符串
练习:声明变量保存邮箱,分别截取出邮箱的用户名和域名
var email = 'tao123@tedu.cn';
//查找@的下标
var index = email.indexOf('@');
//console.log(index);
var userName = email.slice(0,index);
var domain = email.slice(index+1);
console.log(userName,domain);
- substr(start, count) 按照长度截取字符串,start开始的下标,count截取的长度,如果count为空截取到最后,如果下标是负数表示倒数,返回截取到的字符串
//练习:声明变量保存一个人的身份证号码,分别截取生日中的年月日和性别,
//最后打印出以下格式:xxxx年xx月xx日 性别x
var id = '110235197307151870';
var year = id.substr(6,4);
var month = id.substr(10,2);
var date = id.substr(12,2);
var sex = id.substr(-2,1);
//判断性别
var s = sex%2 ? '男' : '女';
console.log(year + '年' + month + '月' + date + '日 性别' + s);
- split( 字符 ) 将字符串按照指定的字符分割为数组
//练习:截取文件名称的后缀名
var str = 'web.2104.tao.jpg';
var arr = str.split('.');
//最后一个元素
console.log(arr[arr.length - 1]);
- join 将数组转为字符串,可以设置字符串之间的分割符
var a = [1,2,3,4,5];
var s = a.join("=="); //指定分隔符
console.log(s);//1==2==3==4==5
2.Math对象
不需要new来创建对象,可以直接使用对象下的api
- 获取圆周率
console.log( Math.PI );//3.141592653589793
- 绝对值 absolute
console.log( Math.abs(18-20) );、//2
- ceil 向上取整
console.log( Math.ceil(3.14) );//4
- floor 向下取值
console.log( Math.floor(3.14) );//3
- round 四舍五入
console.log( Math.round(5.49) );//5
- 取随机 >=0 <1
console.log( Math.random() );
获取随机下标 0 ~ 9:
var arr = ['a','aa','aaa','b','bb','bbb','c','cc','ccc'];
//0~1 * 10 0 ~ 9.X 向下取整 0 ~ 9
var n = Math.floor(Math.random() * 10);
console.log( n, arr[n] );
- pow(x, y) 计算x的y次方
console.log( Math.pow(5,3) );//次方,125
- max() 获取一组数字的最大值
- min() 获取一组数字的最小值
console.log( Math.max(23,9,45,78,6) );//78
console.log( Math.min(23,9,45,78,6) );//6
3.Date对象
用于对日期时间的存储和计算
(1)创建
- new Date(‘2021/5/18 10:27:30’)
- new Date(2021,4,18,10,27,30) 月份0~11 对应1月~12月
- new Date() 存储当前操作系统的时间
- new Date(1608336000000) 存储的是距离计算机元年的毫秒数,会产生一个具体的日期时间
计算机元年:0时区1970-1-1 0:0:0
(2)获取存储的日期时间
- getFullYear/getMonth/getDate 获取的月份0~11 对应1~12月
- getHours/getMinutes/getSeconds/getMilliseconds毫秒
- getDay 获取星期 0~6 对应星期日~星期六
- getTime 获取距离计算机元年的毫秒数
//练习:创建Date对象,保存当前操作系统的时间,获取日期时间,
//打印以下格式 今天是xxxx年xx月xx日 xx时xx分xx秒 星期二
var d = new Date(); //获取当前操作系统的时间
var year = d.getFullYear();
var month = d.getMonth() + 1;
var date = d.getDate();
var hour = d.getHours();
var minute = d.getMinutes();
var second = d.getSeconds();
var day = d.getDay();//0~6
//用获取的星期的值作为下标就可以找对应的汉字状态
var arr = ['日','一','二','三','四','五','六'];
//console.log( arr[day] );
//如果月份小于10,则在前拼接0
if (month < 10) {
month = '0' + month;
}
//一般最后都是变量拼接
console.log('今天是'+year+'年'+month+'月'+date+'日 '+
hour+'时'+minute+'分'+second+'秒 星期'+arr[day]);
(3)转为本地字符串格式
存在兼容性问题,常用于调试
- toLocaleString() 日期+时间
- toLocaleDateString() 日期
- toLocaleTimeString() 时间
(4)设置日期时间
修改Date对象中存储的日期时间
- setFullYear/setMonth/setDate
月份1~12 对应的值 0~11 - setHours/setMinutes/setSeconds/setMilliseconds
- setTime 设置距离计算机元年的毫秒数,产生一个具体的日期
(5)拷贝Date对象
var d1 = new Date();
var d2 = new Date(d1); //拷贝d1对象
示例:拷贝+设置日期时间
//练习:创建Date对象,保存'2021/5/20',作为入职时间;
//拷贝入职时间的对象作为到期时间,设置合同期为3年(3年后);分别打印两个对象的本地字符串格式。
//拷贝到期时间对象作为续签时间,提前一个月进行续签,如果是周末提前到周五,打印续签时间的本地字符串格式
//入职时间
var d1 = new Date('2021/5/20');
//到期时间
var d2 = new Date(d1);
//设置合同期为3年
d2.setFullYear( d2.getFullYear()+3 );
//拷贝到期时间对象,作为续签时间对象
var d3 = new Date(d2);
//提前一个月
d3.setMonth( d3.getMonth()-1 );
//判断是否为周末
var day = d3.getDay();
console.log(day);
if(day === 6){ //周六
//提前一天
d3.setDate( d3.getDate()-1 )
}else if(day === 0){
//提前两天
d3.setDate( d3.getDate()-2 );
}
console.log('入职时间:' + d1.toLocaleDateString());
console.log('到期时间:' + d2.toLocaleDateString());
console.log('续签时间:' + d3.toLocaleDateString());
4.Number对象
- new Number() 将数据转为数值,返回对象
- Number() 将数据转为数值,返回数值
var n1 = 1;//字面量
var n2 = new Number(true); //构造函数
var n3 = Number(true); //普通函数
console.log(n2, typeof n2); //[Number: 1] object
console.log(n1 + 2, n2 + 2);//3 3
console.log(n3); //1
- toFixed(n) 保留小数点后n位
var n = 2 * 3.14 * 5;
//保留小数点后n位
console.log( n.toFixed(1) );//31.4
var total = 6988*2 + 5199*3;
//给整数保留小数点后n位
console.log( total.toFixed(2) );//29573.00
- toString(n) 将数值转为字符串,可以设置显示的进制
var num = 10;
//转为字符串,可以设置显示的进制
console.log( num.toString(16) );
5.Boolean对象
- new Boolean() 将数据转为布尔型,返回对象
- Boolean() 将数据转为布尔型,返回布尔型
var b1 = true;//字面量
var b2 = new Boolean(1);//构造函数
var b3 = Boolean(1);
console.log(b2, typeof b2); //[Boolean: true] object
console.log(b3); //true
- !! 隐式转换为布尔型
console.log( !!null ); //false