(1)判断类型
1)通过 typeof 来获取变量的实际数据类型。
2)判断对象类型
if(对象 instanceof [对象类型]){
//判断该对象是不是所判断的类型
}
(2)null 的变量类型通过typeof获取得到的是object,而不是null。
(3)遍历的新方法:for in
var arr = [1,2,3,'4',false];
for(var index in arr){
//得到的index遍历的是索引
//真正要展示内容要通过:arr[index] 获取
}
(4)回调 函数:
//函数一:输出某个字符串
var print = function(msg){
document.write(msg);
}
//函数二:计算两数的和并输出结果
var sum = function(a,b,method){
var c = a+b;
method(c);//在函数二中调用函数一,即为回调。
}
//回调得到答案
sum(1,2,print);
(5)不定数量传参
方法:不写参数,通过 arguements[index] 获取,index是索引
function sum(){
for(var index in arguments){//for in 得到有多少个参数
...//进行运算
}
}
因为第五点,所以:js函数没有重载,同名函数后出现则会替代前者。
从函数的本质是变量上看,第二个重名函数等同于给原来的函数(变量)赋新值,所以函数体内容会更改,而不同于其他语言的重载。
(6)通过变量指定的函数,必须先定义再使用。如:
fun1();//正确调用
function fun1(){
alert("这是函数一");}
fun2();//错误调用,因为fun2函数未定义
var fun2 = function(){
alert("这是函数二");
}
fun2();//正确调用
(7)常用类库一 —— String类库
charAt(index) 某个索引下字符,从0开始。
substring(1,3) 截取索引1到3的字符
slice(-3)截取后三个
indexOf() 找字符位置(从前往后)
lastIndexOf() 找字符位置(从后往前)
replace("h",0) 只改变第一个字符h为0
trim() 去除前后空格
特别的:
① 全局搜索
通过正则表达式操作:
如:所有的h换为0
replace(/h/g,0);
以此类推:将所有空格去除
replace(/ /g,"")
② 将字符串拆分为数组
var str="a,b,c,d";
var arr = str.split(",");//以","为分隔符,拆分为数组
(8)常用类库二 —— Math
Math.ceil(1.4)//2,向上取
Math.floor(1.6)//1,向下取
Math.round()//四舍五入
Math.abs()//取绝对值
(9)常用类库三 —— Date 日期类的使用
//创建时间日期示例
var date = new Date();
//自己构建时间对象
var date2 = new Date("2012-12-12 12:12:12");
为何要自己构建:
方便提取时间里面的某一部分,如:
date2.getFullYear();//注意了,不是getYear()
date2.getMonth();//从0月开始算,要自己加1
date2.getDate();//获取日期
(10)常用类库四 —— Number类
① 转为字符串
var num = 10;
num.toString([进制数]);//有带参数,则转成该进制下的字符串,如:num.toString(2) = 1010
② 取小数位数
var num2 = 10.267234214;
num2.toFixed(2);//取后两位小数,会四舍五入
③ 字符转数字
Number(Str);//智能转换,自行判断是否保留小数
parseInt(Str);//强制转为整数,不保留小数,也即不四舍五入
parseFloat(Str);//强制转为浮点数
(11)常用类库五 —— Array类(最重要)
//① 创建对象
var arr = new Array([元素]);//可带参,作为元素
//-------------------------------------------等同于下方
var arr = [元素];
//② 添加元素
arr.push(元素);//往后放
//拼接数组
数组A.concat(数组B);
//③ 截取数组
数组.alice(开始索引,结束索引)
//④ 任意位置插入删除元素
数组.splice(2,0,"abc");
//第一个值是插入索引位置,第二个值是删除该索引后多少个值
//⑤ 排序
数组.sort();//默认以ASCLL码值排,所以一般并不符合我们的需求
真正要排,要使用回调函数:
ar arr = new Array(21,32,1,65,3,12,8);
arr.sort(function(num1,num2){
1) return num1-num2;//是否n1>n2,是则交换,否则不变,所以是降序
2) return num2-num1;//是否n2>n1,是则交换,否则不变,所以是升序
3) return 1;//无论怎样都交换,是倒序 == arr.reverse( )
});
//⑥ 栈和队列
出队:取出第一个值
var item = 数组.shift( );
出栈:取出最后一个值
var item = 数组.pop( );
//⑦ 迭代
1) 判断数组各元素是否都符合情况,返回布尔值
var arr = new Array(21,32,4,65,7,12,8);
var result = arr.every(function(item,index,array){
return item>5;//判断每个值是否都是大于5,有个false则是false
});//返回布尔值
2)找出所有符合情况的元素
var arr = arr.filter(function(item,index,array){
return item>5;//判断是否大于5
}//返回符合条件的所有情况
3)批量操作每个元素
var arr = arr.map(function(item,index,array){
return 2+item;//给所有元素加上2,实际操作数组
}
最基础遍历:
var arr = arr.forEach(function(){
...
});
(12)实战练习:贪吃蛇 中 课外知识。
1)定时器:
setInterval(function(){
...
}, 时间毫秒);
2) 全局监听器
document.onkeydown = function(e){
...
}