内置对象
- JavaScript 中的对象分为3种:自定义对象 、内置对象、 浏览器BOM对象
- 内置对象就是指 JS 语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能
- JavaScript 提供了多个内置对象:Math、 Date 、Array、String等
String
字符串的不可变
指的是里面的值不可变,虽然看上去可以改变内容,但其实是地址变了,内存中新开辟了一个内存空间。
var str = 'abc';
str = 'hello';
// 当重新给 str 赋值的时候,常量'abc'不会被修改,依然在内存中
// 重新给字符串赋值,会重新在内存中开辟空间,这个特点就是字符串的不可变
// 由于字符串的不可变,在大量拼接字符串的时候会有效率问题
var str = '';
for(var i = 0; i < 10000; i++){
str += i;
}
console.log(str);
// 这个结果需要花费大量时间来显示,因为需要不断的开辟新的空间
charAt
通过下标获取字符串里的某个字符
字符串.charAt(下标);
//例子;
var str ="hello";
console.log(str.charAt(2));
charCodeAt(index)
获取指定位置处字符的ASCII码(index索引号)
concat
多个字符串拼接
var 变量名= 字符串.concat(字符串2,字符串3,字符串n);
//例子:
var str = "hello".concat("wor","ld");
console.log(str); //helloworld
substr&subString
获取字符串中的一部分
subString
结束下标不写,会将开始下标到字符串结束截取
var 变量名 = 字符串.substr(开始下标,子字符串的字符数量)
var 变量名 = 字符串.substring(开始下标,结束下标(不包含));
//例子:
var str = "hello world";
//1. 获取 wor
str.substr(6,3);
str.substring(6,9)
slice
获取字符串中的一部分
var 变量名 = 字符串.slice(开始下标,结束下标(不包含));
//例子:
var str = "hello world";
//1. 获取 wor
str.slice(6,9);
//2. 获取hello worl
str.slice(0,10)
split
根据某个分割符号,将字符串转为字符串数组
字符串.split(分割符号);
//例子:将"1,2,3,4,5" 转为数组
var str = "1,2,3,4,5";
var arr = str.split(',');
console.log(arr); //[1,2,3,4,5]
indexOf
查找某个字符在字符串中第一次出现的下标 没有找到会返回-1
字符串.indexOf(字符);
//例子:
var index = "hello world".indexOf('o');
console.log(index);//4
lastIndexOf
查找某个字符在字符串中最后一次出现的下标 没有找到会返回-1
字符串.lastIndexOf(字符);
//例子:
var index = "hello world".lastIndexOf('o');
console.log(index); // 7
replace & replaceAll
完成字符串中某些字符的替换
字符串.replace("旧字符","新字符");
字符串.replaceAll("旧字符","新字符");
//例子:将"1-2-3-4-5"中的"-"换成"#"
//1. 只换第一个
var newStr= "1-2-3-4-5".replace('-','#');
//2. 换所有的
var newStr= "1-2-3-4-5".replaceAll('-','#');
//3. 去掉 字符串中所有的空格
var newStr= "1 2 3 4 5".replaceAll( ",");
trim
消除字符串两端的空白字符
字符串.trim();
//例子;
var str = " 123 ".trim();
console.log(str);"123"
startsWith
判断某字符串是否以某些字符开头
var result= 字符串.startsWith('字符串');
//例子:判断hello world 是否以 he 开头
var result ="hello world".startsWith('he'); // true
var result ="hello world".startsWith('hello world'); // true
var result ="hello world".startsWith('world'); // false
endsWith
判断某字符串是否以某些字符结尾
var result= 字符串.endsWith('字符串');
//例子:判断hello world 是否以 rld 结尾
var result ="hello world".endsWith('rld'); // true
var result ="hello world".endsWith('world'); // true
var result ="hello world".endsWith('hello world'); // true
大小写转换
toUpperCase()
转换大写toLowerCase()
转换小写
Date() 日期对象
- Date 对象和 Math 对象不一样,他是一个构造函数,所以我们需要实例化后才能使用
- Date 实例用来处理日期和时间
Date()方法的使用
获取当前时间实例化
var now = new Date( );
Date()构造 函数的参数
- 若括号里面有时间,就返回参数里面的时间。
- 例:日期格式字符串为
2021-9-1
,可以写成new Date('2021-9-1')
或者new Date('2021/9/1')
日期格式化
方法 | 说明 | 代码 |
---|---|---|
getFullYear() | 获取当前年份 | dobj.getFullYear() |
getMonth() | 获取当前月份(0-11) | dobj.getMonth() |
getDate() | 获取当天的日期 | dobj.getDate() |
getDay() | 获取星期几(周日0到周六6) | dobj.getDay() |
getHours() | 获取当前小时 | dobj.getHours() |
getMinutes() | 获取当分钟数 | dobj.getMinutes() |
getSeconds() | 获取当前秒钟 | dobj.getSeconds() |
日期格式化函数
function getTime(format) {
var now = new Date();
//将YYYY转为当前的年份
format = format.replace(/YYYY/g, now.getFullYear());
//将MM转为当前的月份,本身api获取的0~11,所以要加1
format = format.replace(/MM/g, now.getMonth() + 1);
// 将DD转为当前日期
format = format.replace(/DD/g, now.getDate());
// 将hh转为当前小时数
format = format.replace(/hh/g, now.getHours());
//将mm转为当前分钟数
format = format.replace(/mm/g, now.getMinutes());
//将ss转为当前秒数
format = format.replace(/ss/g, now.getSeconds());
//将 E转为星期几,api得到的是0~6,0表示星期天
var weekday = now.getDay();
if (weekday == 0) {
weekday = "天";
} else if (weekday == 1) {
weekday = '一';
} else if (weekday == 2) {
weekday = '二';
} else if (weekday == 3) {
weekday = '三';
} else if (weekday == 4) {
weekday = '四';
} else if (weekday == 5) {
weekday = '五';
} else if (weekday == 6) {
weekday = '六';
}
format = format.replace(/E/g, weekday);
return format;
};
/*
YYYY: 年份
MM:月份
DD: 日期
hh :当前小时数
mm: 当前分钟数
ss: 当前秒数
*/
// var str = getTime("YYYY/MM/DD hh:mm:ss "+'星期E' );
获取日期的毫秒数(时间戳)
data.valueOf( )
date.getTime( )
- 简单写法:
+new Date()
- HTML5新增:有兼容性问题
Date.now()
得到现在距离1970.1.1 总的毫秒数
获取Date总的毫秒数 不是当前时间的毫秒数 而是距离1970年1月1号过了多少毫秒数*
倒计时封装
function countDown(time) {
var nowTime = +new Date(); //没有参数,返回的是当前时间总的毫秒数
var inputTime = +new Date(time); // 有参数,返回的是用户输入时间的总毫秒数
var times = (inputTime - nowTime) / 1000; //times就是剩余时间的总的秒数
var d = parseInt(times / 60 / 60 / 24); //天数
d < 10 ? '0' + d : d;
var h = parseInt(times / 60 / 60 % 24); //小时
h < 10 ? '0' + h : h;
var m = parseInt(times / 60 % 60); //分
m < 10 ? '0' + m : m;
var s = parseInt(times % 60); //秒
s < 10 ? '0' + s : s;
return d + '天' + h + '时' + m + '分' + s + '秒';
}
console.log(countDown('2021-12-20 18:29:00'));
Math对象
Math 对象不是构造函数,它具有数学常数和函数的属性和方法。跟数学相关的运算(求绝对值,取整、最大值等)可以使用 Math 中的成员。
Math.PI
圆周率Math.floor()
向下取整Math.ceil()
向上取整Math.round()
四舍五入版 就近取整 注意 -3.5 结果是 -3四舍五入 其他数字都是四舍五入,但是5特殊,它往大了取*
Math.abs()
绝对值Math.max()
/Math.min()
求最大和最小值
console.log(Math.PI);
console.log(Math.max(1,99,3)); // 99
随机数random()
random()
方法可以随机返回一个小数,其取值范围是[0,1) 左闭 右开
// 得到两个数之间的随机整数,并且包含这两个整数
function getRandom(min,max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
console.log(getRandom(1,10));