第三周Day4

107 阅读3分钟

Math对象:

提供了一些数学算的API

强调:不需要创建,直接使用:全局对象WindowMath;
属性:Math.PI 可以得到圆周率:3.1415926...
API:
    1、整取:31.上整取:有小数就取下一个整数 
            Math.ceil(数字)
    2、下整取:忽略小数取整值
            Math.floor(数字)
    3、四舍五入取整:
            Math.round(数字)
以上三个操作都只能取整;

取整的方式:上面三个+*parseInt+num.toFixed(小数位数)
    推荐使用:num.toFixed(小数位数):
    优点:具有四舍五入,并且小数位数由自己设置;
    缺点:返回得一个字符串,搭配上一个parseFloat

乘方和开方:

乘方:result=Math.pow(底数,幂)

开方:result=Math.sqrt(数字) -> 只能开平方

最大值和最小值:

Math.max/min(数字1,数字2,数字3,...);
问题:不支持数组参数;
解决:
    固定用法:Math.max/min.apply(Math,数组);
apply是ES5的东西,apply具有打散数据的功能。

绝对值:把负数变为整数;

Math.abs(负数)

随机数:

Math.random() ->在0-1之间取随机的很多位小数,有可能取到0,不可能取到1。

公式:Math.random()*(最大值-最小值+1)+最小值;
解析:随机到的小数*(最大值-最小值+1)
    +最小值->因为随机到的小数可能是0,而0*任何数都为0,所以要在最后加一个最小值,
             避免你最后需要的随机数不为0的时候随机到0
强调:只要页面中有随机功能,那么一定是使用到了随机数。

注意:其实Math还提供了三角函数;

date对象:

提供了操作时间的API;

1,创建:4种

1.*创建一个当前时间:
    变量=new Date();
2.*创建了一个自定义时间:
    变量=new Date"年份/月份/日期 小时:分钟:秒钟");
    变量=new Date(年份,月份,日期,小时,分钟,秒钟); -> 缺点:月份是从0-11开始,需要输入修正-13.复制一份日期:
    为什么要复制:日期的所有API都是直接修改原来的日期对象,无法获得修改之前的日期;
    所以在执行之前都要先复制,然后在操作复制后的日期;
        var 变量=new Date(要复制的变量名);
2,操作:
    1.两个日期对象之间可以相减,得到一个毫秒差,换算出你想要得到的任意一部分 《日期的本质就是保存了一个毫秒》
    所以我们还可以用变量=new Date(毫秒数)来创建

2.API:

分量:时间的单位;
年月日星期:Fullyear Month Date Day
时分秒毫秒:Hours Minutes Seconds Milliseconds
每一个分量都可以设置getXXX/setXXXX的API,除了Day不能设置set
    get:获取;
    set:设置;
特殊:
    1.取值范围:
        年 - 当前的年分
        月 - 0~11- 1~31
        星期 - 0~6  -> 0代表周日,外国认定周日是一周的开始
        时 - 0~23/-0~59

3,建议:如果你希望对某个分量做加减:

date.setXXXX(date.getXXX()+/-n);

例子:date.setFullyear(date.getFullyear(想获取的对象的变量名)+3); 年份+3年。

4,格式化日期对象 -> 字符串:

date.toLocaleString();    
locale -> 本地 - 具有兼容性问题,在不同的浏览器显示出来的效果不一样;

日期可以用日期自己的API - 日期强在日期会自动进制

字符串也只可以用字符串自己的API

一旦格式化位字符串则不可用日期的API