1、Math
不能创建,不需要创建,可以直接使用
唯一的属性:Math.PI
API:
1、取整:3种
上取整:只要超过一点点,就会取下一个整数,此方法小数位数不能超过15位否则会失效
Math.ceil(num);
下取整:不管超过多少,都会省略掉小数部分,此方法小数位数不能超过15位否则会失效
Math.floor(num);
四舍五入取整:
Math.round(num);
问题:四舍五入虽然不错,但是以上三个API只能取整
解决:parseFloat(num.toFixed(d));//既有四舍五入功能,又具有保留自定义小数位数的操作,结果是一个字符串
笔试:
封装一个函数,实现可以自定义保留小数位数并且四舍五入的功能,但是不允许使用toFixed?
function round(num,d){
num*=Math.pow(10,d);
num=Math.round(num)
num/=Math.pow(10,d);
return num.toString();
}
2、乘方和开方
乘方:Math.pow(底数,幂); - 简化连续的乘法
开方:Math.sqrt(num); - 只能开平方
3、最大值和最小值
语法:Math.max/min(a,b,c,d,e,f....);//获取到最大的一个数或者最小的一个数
问题:不支持数组参数
*解决:Math.max/min.apply(Math,arr);
apply:自己没有的方法可以去借用
可以将数组打散为单个参数悄悄进行传入
4、绝对值:将负数转为整数
Math.abs(num);
5、随机数:只要页面上具有随机的功能,底层一定用到了随机数
Math.random() 已经是一个随机数了,随机的小数0-1,有可能取到0,但是绝对不可能取到1 - 意味着能取到最小值,但是取不到最大值
公式:parseInt(Math.random()*(max-min+1)+min);
2、Date
封装了一个日期对象,提供了对日期事件进行操作的API
1、创建日期对象:4种
a、创建当前时间:
var now=new Date();
b、创建自定义时间:
var birth=new Date("yyyy/MM/dd hh:mm:ss");
c、创建自定义时间:
var birth=new Date(yyyy,MM,dd,hh,mm,ss);
缺点:月份需要修正:计算机中月份是从0开始到11的
d、复制一个日期对象:
为什么:日期对象的API都是直接修改原日期对象,使用API后,无法同时保存住旧的日期对象
何时使用:在调用日期对象的API之前都要先复制,在使用API
语法:var end=new Date(now);
5、
var xxx=new Date(毫秒数);
计算器其实保存的就是从1970年1月1日至今的毫秒数
API
分量:时间单位
FullYear Month Date Day
Hours Minutes Seconds
①每一个分量都有一对儿方法:getXXX()/setXXX()
特殊:1、取值范围:
年:当前年份
月:0-11
日:1-31
时:0-23
分:0-59
星期:0-6,0代表星期天
2、星期只有get,没有set
②固定套路:对着某个日期直接做加减
date.setXXX(date.getXXX()+3)
③格式化为字符串:
国际化日期格式化为本地化日期:
date.toLocaleString();
缺点:1、具有浏览器的兼容性问题 2、则不可以再使用日期对象的API,也不会再带有进制操作了
好处:转为了字符串可用字符串的API
解决:自定义format格式化
function format(date){
var y=date.getFullyear();
var m=date.getMonth()+1;
var d=date.getDate();
...
return y+"年"+m+"月"+d+"日"+...;
}