一、
Math:不用创建
Math.PI
API:取整:Math.ceil(num); Math.floor(num); Math.round(num);
乘方:Math.pow(底数,幂); 开方:Math.sqrt(num);
最大值和最小值 Math.max/min(a,b,c,d,e...); 支持数组:Math.max/min.apply(Math,arr);
绝对值:Math.abs(num);
***随机整数:parseInt(Math.random()*(max-min+1)+min);
Date:
创建: 1、当前时间:var now=new Date();
2、自定义时间:var date=new Date("yyyy/MM/dd hh:mm:ss");
var date=new Date(yyyy,MM-1,dd,hh,mm,ss);
3、复制日期:var end=new Date(start);
操作:FullYear Month Date Day Hours Minutes Seconds
每一个分量都有一对儿getXXX/setXXX,除了Day没有set操作
Number:
创建:var num=new Number();
num.toFixed(d);//结果是一个字符串
num.toString();
Boolean:
创建:var bool=new Boolean(); 一切的引用类型的对象,都具有属性和方法
二,
error:1、语法错误:SyntaxError - 符号错了
2、引用错误:ReferenceError - 没有创建
3、类型错误:TypeError - 不是你的方法你却去使用了
4、范围错误:RangeError - num.toFixed(d);//d 0-100之间
错误处理:try{
可能出错的代码
}catch(err){
console.log("错误提示");
}
重载:同一个函数名,根据传入的实参的不同,执行对应的函数
arguments类数组对象:哪怕没有形参,接住所有的实参
arguments[0] - 第一个实参
arguments[1] - 第二个实参
、自调:代替全局作用域
(function(){
开始写自己的代码 - 变量会自动释放
})();
回调:多半都是API里前辈提供好的,我们学习了就可以直接使用,以后回调函数可以简化箭头函数
只要匿名函数,不是自调,一定就是回调
arr.sort(function(a,b){return a-b})
elem.οnclick=function(){}
三、Function的闭包:
目的:保护一个可以【反复使用的局部变量】的一种词法结构
function outer(){ 受保护的变量
return function(){ 操作受保护的变量 }
}
防抖节流
function outer(){
var timer=null;
return function(){
if(timer){clearTimeout(timer)}
timer=setTimeout(function(){
操作 },间隔毫秒数) }
}
Object:
创建:
1、*直接量:使用创建单个对象
var obj={
"属性名":属性值,
"方法名":function(){},
}
预定义构造函数:
var obj=new Object();//空对象
追加属性和方法
obj.属性名=属性值
obj.方法名=function(){}
自定义构造函数:创建多个对象
1、创建构造函数
function 构造函数名(xingming,nianling,aihao){
this.name=xingming;//ljb.name="";
this.age=nianling;//ljb.age=50;
this.hobby=aihao;//ljb.hobby=3500;
}
2、反复调用构造函数创建对象
var ljb=new 构造函数名("廖家兵",50,3500);
访问:
obj.属性名; obj.方法名();
遍历对象
for(var i in obj){ obj[i]; }
this的指向:
1、事件中:单个元素 this->这个元素
多个元素 this->当前触发元素
2、函数中:this->当前调用次函数的人
3、构造函数中:this->当前正在创建的对象
4、定时器中:this->window