Math对象、Date对象
1. Math对象:专门封装数学计算相关属性和函数的全局对象
属性:Math.PI
函数:
取整:
Math.round(n) Math.ceil(n) Math.floor(n)
四舍五入 上取整 下取整
乘方开方:
Math.pow(n,m):n的m次方
Math.sqrt(n):对n开平方
取大小:
Math.max(n1,n2,n3...): 从参数中取最大值
Math.min(n1,n2,...): 从参数中取最小值
固定套路:获取数组中的最大值/最小值
Math.max.apply(Math,arr);
2. ***Date对象:
封装了一个时间点的数据,提供了对时间的计算操作。
*Date对象中封装的是一个从1970年1月1日0点0分至今的毫秒数*
如何创建:4种:
创建一个日期对象,自动封装当前时间
var date=new Date();
创建一个日期对象,并自定义时间点
var date=new Date(年,月,日[,时,分,秒]);
var date=new Date("yyyy/MM/dd[ hh:mm]");
利用一个毫秒数创建时间对象
vars date=new Date(ms);
日期计算:1. 两日期对象相减,得到毫秒差
日期计算的固定套路:3步
1. 取出要计算的分量值: getXXX()
2. 对分量值做+/-计算
3. 将计算结果再set回去
*所有set方法,都会直接修改原日期对象!*
1. 能够取出每个分量的值
2. 能够对每个分量做计算
API:3句话:
1. 命名:每个分量都有一对儿get/set方法
比如:getMonth() setMonth(n)
2. 命名:年月日星期 不带s;时分秒 带s
比如:getMonth() getHours()
FullYear() Minutes()
Date() Seconds()
Day()
3. 数值范围:只有date(每月中的日),从1开始-31结束
其余都是从0开始,到进制-1结束
比如:day: 日 一 二 三... 六
0 1 2 3 6
month: 1月 2月 3月 ... 12月
0 1 2 11
hour: 0点 1点 2点 15点
0 1 2 15
minute: 00 59分
0 59
结论:只有month需要修正!
日期类型输出为字符串:——了解
date.toLocaleString(); //将date转为本地时间格式
//将date转为本地时间格式,仅包含日期部分
date.toLocaleDateString();
//将date转为本地时间格式,仅包含时分秒部分
date.toLocaleTimeString();
*因为toLocale系列的方法不同浏览器输出不统一。
都会自定义format函数,将日期转为用户希望的字符串*
Number对象:toFixed方法:
优:对任意小数位四舍五入
缺:返回值是String类型,不能参与数字计算
作业:function round(num,d){
//将num按d位小数,四舍五入
//返回四舍五入后的结果
}
console.log(round(123.456,2)); //123.46
1. 错误处理:
错误:程序执行过程中的异常情况,也成异常
错误处理:当程序发生错误时,保证程序不中断的机制
Error对象:当程序发生错误时,*自动*创建的对象
封装了错误的信息:错误的类别,错误的原因
SyntaxError:语法错误——改代码
ReferenceError:引用错误——找不到指定的对象
TypeError:类型错误——错误的使用了类型的方法
RangeError:范围错误——参数超范围
EvalError、URIError——少见,了解。
如何错误处理:try catch finally
try{
可能发生错误的代码段
}catch(err){一旦错误发生,err中就会获得错误对象
提示或处理错误
}[finally{
无论出错与否,都必须执行的代码。
比如:释放资源!
}]
鄙视题:见2_error中
如何抛出自定义错误:throw new Error("异常信息");
2. ***Function对象:
总结:Everything is Object;函数也是引用类型的对象
***重载:真正的重载:tmooc/java/java面向对象/类中的方法
现实中:一件事,参数不同,执行不同的步骤
程序中:一组同名的方法,根据参数不同,调用不同的方法实现
*虽然js中语法不支持重载!但可以通过arguments对象模拟*
arguments对象:在方法中*自动创建*的,接受每个传入参数的类数组对象——Object like Array
arguments.length:传入的参数个数
arguments[i]:第i+1个参数的值
1. 创建方法对象:3种:
1种:function声明方式:function 方法名([参数列表]){
方法体;
return 返回值;
}
比如:function compare(a,b){return a-b;}
****************************************************
2种:用函数直接量方式创建函数对象
var compare=function([参数列表]){
方法体;
return 返回值;
}
比如:var compare=function(a,b){return a-b;}
3种:使用new关键字创建方法对象:
var compare=
new Function("a","b",...,"方法体;return 返回值");
比如:var compare=
new Function("a","b","return a-b;");
2. ***匿名函数:定义时,未指定函数名称的函数
何时使用匿名函数:如果一个函数仅临时使用一次!
2种情况:1. 回调:函数不是立刻调用。而是传递给其它对象,由其它对象自动调用。
比如:arr.sort(function(a,b){return a-b});
new Function("a","b","return a-b")
2. 自调:匿名函数,自己调用自己。
优:节约内存空间:被解释到时动态创建,调用完自动释放
缺:无法重复利用!