JS第三周——day2

147 阅读3分钟

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-60代表星期天
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+"日"+...;
}