🍖JS其他常用对象(Date、Math、JSON、RegExp、global、windows、自定义对象)
🍔Date 日期对象
一.创建日期对象
创建日期对象只有构造函数一种方式,使用new关键字
// 不指定参数,默认当前时间
var now = new Date();
console.log(now);
// Thu Mar 11 2021 21:17:51 GMT+0800 (中国标准时间)
var xmas = new Date('December 25,1995 13:30:00');
console.log(xmas);
// Mon Dec 25 1995 13:30:00 GMT+0800 (中国标准时间)
var xmas = new Date(1995,11,25);
console.log(xmas);
// Mon Dec 25 1995 00:00:00 GMT+0800 (中国标准时间)
var xmas = new Date(1995,11,25,14,30,0);
console.log(xmas);
// Mon Dec 25 1995 14:30:00 GMT+0800 (中国标准时间)
二.常用方法
方法 | 含义 |
---|---|
getDate() | 根据本地时间返回指定日期对象的月份中的第几天(1-31) |
getMonth() | 根据本地时间返回指定日期对象的月份(0-11) |
getFullYear() | 根据本地时间返回指定日期对象的年份(四位数年份时返回四位数字) |
getDay() | 根据本地时间返回指定日期对象的星期中的第几天(0-6) |
getHours() | 根据本地时间返回指定日期对象的小时(0-23) |
getMinutes() | 根据本地时间返回指定日期对象的分钟(0-59) |
getSeconds() | 根据本地时间返回指定日期对象的秒数(0-59) |
getMilliseconds() | 根据本地时间返回指定日期对象的获取毫秒 |
getTime() | 返回累计毫秒数(从1970/1/1午夜) |
更多详细方法 : https://www.w3school.com.cn/jsref/jsref_obj_date.asp
三.常用方法示例
var now = new Date();
//常用方法
console.log(now.getDate()); //获取月份的第几天(1·31)
console.log(now.getMonth()); //获取月份(0`11)+1
console.log(now.getFullYear());//获取年份
console.log(now.getDay()); //获取一星期中的第几天(0`6)
console.log(now.getHours()); //获取小时(0·23)
console.log(now.getMinutes()); //获取分钟(0·59)
console.log(now.getSeconds()); //获取秒(0·59)
//日期格式化方法
console.log(now.toDateString());//星期几 月 日 年
console.log(now.toTimeString());//时 分 秒 时区
//常用
console.log(now.toLocaleDateString());//年 月 日
console.log(now.toLocaleTimeString());//时 分 秒
console.log(now.toLocaleString()); //年 月 日 时 分 秒
// UTC时间
console.log(now.toUTCString());
四.数字时钟格式
- 封装了一个函数, 直接可使用
//下次使用直接调用这个函数就行
function nowNumTime(){
var now = new Date();
var hour = now.getHours();//(0~23)
var minute = now.getMinutes();
var second = now.getSeconds();
//用三元表达式:(18>12 ? hour-12 : hour)
var temp = '' + (hour > 12 ? hour - 12 : hour);
if(hour === 0){
hour = '12';
}
temp = temp+(minute < 10? ':0' : ':') + minute;
temp = temp+(second < 10? ':0' : ':') + second;
temp = temp+(hour >= 12? ' P.M.' : ' A.M');
return temp;
}
var nowTime = nowNumTime();
console.log(nowTime); // 9:22:26 P.M.
🍔Math 数学对象
一.Math对象常用方法
法 | 含义 |
---|---|
Math.floor() | 向下取整,如5.1取整为5 |
Math.ceil() | 向上取整,如5.1取整为6 |
Math.max(a,b) | 求a和b中的最大值 |
Math.min(a,b) | 求a和b中的最小值 |
Math.random() | 随机数,默认0-1之间的随机数,若想求min~max之间的数,公式为:min+Math.random()*(max-min) |
abs(x) | 返回数的绝对值 |
exp(x) | 返回 e 的指数 |
log(x) | 返回数的自然对数(底为e) |
pow(x,y) | 返回 x 的 y 次幂 |
round(x) | 把数四舍五入为最接近的整数 |
sin(x) | 返回数的正弦 |
sqrt(x) | 返回数的平方根 |
tan(x) | 返回角的正切 |
二.常用方法示例
// 方法 .min() .max()
var max = Math.max(3,4,58,69);
var min = Math.min(3,4,58,69);
console.log(max);
console.log(min);
// 数组
var arr = [1,2,3,14,58,69];
var max2 = Math.max.apply(null,arr);
var min2 = Math.min.apply(null,arr);
//var max = Math.max(arr[0],arr[1],arr[2],arr[3]....);
console.log(max2);
console.log(min2);
// .ceil() .floor() .round()
var num = 12.55;
console.log(Math.ceil(num));//天花板函数 向上取整
console.log(Math.floor(num));//地板函数 向下取整
console.log(Math.round(num));//标准四舍五入
// 随机数 .random() 0<=random<1
console.log(Math.random());
🍔JSON 对象
JSON格式的字符串转成对象
var str1='{"name":"shawn","age":23}';
var obj1=JSON.parse(str1);
console.log(obj1.name); // "shawn"
console.log(obj1["name"]); // "shawn"
将对象转成JSON格式
var obj = {"name":"shawn","age":23};
var str = JSON.stringify(obj);
🍔RegExp 正则对象
常用匹配模式
-
g (全局匹配,找到所有匹配,而不是在第一个匹配后停止)
-
i (忽略大小写)
注意
- 正则放到引号内
- { } 内的逗号后面不要加空格
// 创建正则对象方式 1
var reg1 = new RegExp("^[a-zA-Z][a-zA-Z0-9_]{5,11}$");
// 匹配用户名只能是英文字母、数字和_,并且首字母必须是英文字母, 长度最短不能少于6位, 最长不能超过12位。
reg1.test("shawn_1111") // true
// 创建正则对象的方式 2
var reg2 = /^[a-zA-Z][a-zA-Z0-9_]{5, 11}$/; // 不要加引号
reg2.test("shawn_11111") // true
// String对象与正则结合的4个方法
var s1 = "hello world";
s1.match(/l/g) // 符合正则的内容["l", "l", "l"]
s1.search(/h/g) // 符合正则的内容的索引0
s1.split(/ /) // ["hello", "world"]
s1.replace(/l/ g,'L') // "heLLo worLd"
// 匹配模式g与i
var s2 = "name:shawn age:18"
s2.replace(/e/, "赢") // "nam赢:shawn age:18"
s2.replace(/e/g, "赢") // "nam赢:shawn ag赢:18"
s2.replace(/e/gi, "赢") // "nam赢:赢hawn ag赢:18"
注意 :
1、如果regExpObject带有全局标志g,test()函数不是从字符串的开头开始查找,而是从属性regExpObject.lastIndex所指定的索引处开始查找。
2、该属性值默认为0,所以第一次仍然是从字符串的开头查找。
3、当找到一个匹配时,test()函数会将regExpObject.lastIndex的值改为字符串中本次匹配内容的最后一个字符的下一个索引位置。
4、当再次执行test()函数时,将会从该索引位置处开始查找,从而找到下一个匹配。
5、因此,当我们使用test()函数执行了一次匹配之后,如果想要重新使用test()函数从头开始查找,则需要手动将regExpObject.lastIndex的值重置为 0。
6、如果test()函数再也找不到可以匹配的文本时,该函数会自动把regExpObject.lastIndex属性重置为 0。
🍔global 对象
URL
var url = 'https://www.luffycity.com/study/chapter/39863/2'
编码
encodeURIComponent()编码 (使用最多的方法)
encodeURI(url) (只能编码空格)
console.log(encodeURI(url)); // 只能编码空格
console.log(encodeURIComponent(url));
解码
decondeURIComponent()
console.log(decodeURI(encodeURI(url)));
console.log(decodeURIComponent(encodeURIComponent(url)));
🍔windows 对象
在ECMAScrip中顶层对象就是window对象
// 定义变量时
var a=3;
console.log(window.a); // 3
// 定义函数时
function hello(){
alert(window.a); // 3
}
window.hello();
🍔自定义对象
引入
JavaScript的对象(Object)本质上是键值对的集合(Hash结构),但是只能用字符串作为键。
创建自定义对象
- 你可以看成是我们python中的字典 但是js中的自定义对象要比python里面的字典操作起来更加的方便
// 第一种创建自定义对象的方式
let d1 = {'name': 'shawn', 'age': 18};
console.log(typeof d1); // object
console.log(d1['name']); // shawn(获取对象方式一)
console.log(d1.name); // shawn(获取对象方式二)
for (let i in d1) {
console.log(i, d1[i]); // 支持for循环 暴露给外界可以直接获取的也是键
}
// 第二种创建自定义对象的方式: 需要使用关键字 new
let d2 = new Object(); // 创建的是空对象{}
d2.name = 'shawn'; // 对象修改(增)方式一
d2['age'] = 18; // 对象修改(增)方式二
console.log(d2); // {name: "shawn", age: 18}
总结
定义对象的2种方式: {}, new Object()
访问对象的2种方式: 对象.属性名, 对象['属性名']
修改对象的2种方式: 对象.属性名=属性值, 对象['属性名']=属性值