十一、内置对象
第一部分:内置对象
(一)内置对象导读
(二)内置对象的概念
JS中,对象分三大类:自定义对象,内置对象,浏览器对象
前面两种对象时JS基础内容,是ECMAScript.第三个浏览器对象是JS独有的.
内置对象,比如手机自带的功能就是手机的内置对象,我们不关心它的具体实现过程.
内置对象就是指JS语言自带的一些对象,这些对象供开发者使用,并提供了一些常用的或是最基本而必要的功能(属性和方法).
内置对象最大的优点就是帮助我们快速开发.
JS中的常见内置对象有:Math,Date,Array,String等
(三)学会查阅MDN文档
学内置对象最有效的学习方式就是查文档,用MDN查.
Mozilla开发者网络(MDN)提供了有关开放网络技术(OpenWeb)的信息,包括HTML,CSS和万维网以及HTML5应用的API
查阅到的是对象,那该如何学习对象中的方法?(步骤)
- 查阅该方法的功能.
- 查看里面参数的意义和类型(带中括号的参数指的是可以有也可以没有).
- 查看返回值的意义和类型.
- 通过demo进行测试
这个文档也可以通过中文查阅
第二部分:Math对象
(四)Math对象
Math对象不是构造函数,它具有数学函数和常数的属性和方法,跟数学相关的运算(求绝对值,取整,最大值等)可以使用Math中的成员.
- 最大值方法
Math中的属性和方法都是静态的,可以直接使用,无需new
如: console.log(Math.PI); //属性 console.log(Math.max(1,99,3)); //方法 Math.max里面如果没有传参数,则返回-Infinity.如果传递了非数值参数,结果为NaN - 封装自己的数学对象案例:利用对象封装自己的数学对象,里面有PI,最大值,最小值. var myMath={
1. PI: 3.1415926,
max: function(){
var max=arguments[0];
for(var i=0;i<arguments.length;i++){
if(max<arguments[i]) max=arguments[i];
}
return max;
},
min:function(){
var min=arguments[0];
for(var i=0;i<arguments.length;i++){
if(min>arguments[i]) min=arguments[i];
}
return min;
}
}
console.log(myMath.PI);
- 绝对值 console.log(Math.abs(1)); console.log(Math.abs(-1)); console.log(Math.abs('-1')); //输出还是1 绝对值方法中存在隐式转换,会将字符串转成数值.
- 取整方法 Math.floor(1.1); //输出为1,向下取整 Math.ceil(1.1); //输出为2,向上取整 Math.round(1.1); //输出为1,四舍五入 .5往大取,Math.round(-1.5)==-1
- 随机数方法random() Math.random(); 它随机返回一个[0,1)之间的小数.如果想得到两个数之间的随机整数: Math.getRandomInt(min,max); 也可以自己重写方法,完成自己的随机函数: var arr=['张三','李四','王五','赵六'];
3. function getRandom(min,max){
return Math.floor(Math.random()*(max-min+1)+min);
}
var num=getRandom(0,arr.length-1);
console.log(arr[num]);
(五)Math案例:猜数字游戏
function getRandom(min,max){
return Math.floor(Math.random()*(max-min+1)+min);
}
var num=getRandom(0,10);
while(true){
var mynum=prompt('请猜数字')-0;
if(num==mynum) break;
else if(num<mynum) alert('太大了');
else alert('太小了');
}
alert('猜对啦!!');
第三部分:Date对象
(六)Date日期对象
Date要通过Date构造函数来创建对象,必须new才能用.
var date=new Date();
console.log(date);
输出为当前时间
里面可以有参数,常用的写法为:
var date1=new Date(2019,10,02);
var date2=new Date('2019-10-1 8:8:8');
里面输入的如果是数字,月份一项会默认从0开始记.如果输入的是1-12,则实际结果会比输入的大1
因此最常用的是字符串
(七)格式化日期
手动书写日期格式,就是日期的格式化.
常用的日期方法:
- getFullYear():获取当年
- getMonth():获取当月(0-11)
- getDate():获取当天日期
- getDay():获取当天星期几(0-6),周日是0,剩下的从1到6.
- getHours():获取当前小时
- getMinutes():获取当前分钟
- getSeconds():获取当前秒钟
如:
var date=new Date();
console.log(date.getFullYear());
console.log(date.getMonth());
如果想要20xx年 xx月 xx日的格式,则需要:
var date=new Date();
var year=date.getFullYear();
var month=date.getMonth()+1;
var day=date.getDate();
console.log('今天是'+year+'年 '+month+'月 '+day+'日');
时分秒同理.
也可以获取总的毫秒数,从1970年1月1日至今的毫秒数:
var date=new Date();
console.log(date.valueOf());
console.log(date.getTime()); //这两个的都是获取当前毫秒数.
//简单写法:(最常用的写法)
var date1=+new Date(); //它的返回值就是总的毫秒数
//最最简单的写法:
console.log(Date.now()); //直接获取现在的毫秒数,不创建对象
总的毫秒数也叫时间戳,因为只要盖了这个戳,就是独一无二的,不会再重复.
(八)倒计时
做一个倒计时效果
用输入的时间减去现在的时间,就是剩余的时间.
注意,不能用时间直接相减.要用时间戳,1970开始的两个时间毫秒数相减.
function countDown(time){
var nowTime=+new Date();
var inPutTime=+new Date(time);
var times=inPutTime-nowTime;
var second=parseInt(times/1000)%60;
second=second<10? '0'+second : second;
var minute=parseInt(time/1000/60)%60;
minute=minute<10? '0'+minute : minute;
var hour=parseInt(time/1000/60/60)%24;
hour=hour<10? '0'+hour : hour;
var day=parseInt(time/1000/60/60/24)%365;
day=day<10? '0'+day : day;
console.log(day+' '+hour+' '+minute+' '+second);
}
var date=new Date('2022-8-1');
countDown(date);