首先,我们要知道JS的数据类型主要分为两大类:
1.原始数据类型:
1)boolean
2)string
3)number
4)null
5)undefined
2.引用数据类型:
1)宿主 -->Bom,Dom
2)内置 -->Globe Math
3)原生 -->function,array,object...
原始型数据类型和引用型数据类型的差距:
两者差距在于对其的储存方式不同,原始型数据类型是用一个存储点来储存,所以传递过去的直接是数据的内容,而引用型数据类型是用一排连续的储存点来进行储存,不能直接一次传送过去所有的内容,是按照顺序一个接一个的进行存储,所以如果在传递过程中发生了数据的改变,那么被传递的一方也会跟着改变~
我们知道,如果要在一个函数中使用一个定义的变量,要么是在全局中定义,要么在该函数中定义,如果该变量在另一个函数中的话,就比较麻烦了(至少以前我是不知道该怎么做的)。
所以我们可以用一种闭包的方法来实现,下面是该方法的基本用法:
function main(){
var i=0;
var out=function(){
i++;
console.log(i);
}
return out;
}
var bpack=show();
bpack();
运行的结果是每一次运行就会实现i++的效果,而并不会每次都让i=0。也就是说,当我们执行函数
bpack()的时候,可以将i独立出来,并不受main()里面i的影响。就可以实现在两个函数中相互调用变量。
从例子中,我们可以看出,闭包的原理就是在一个函数中return另一个函数,然后再调用主函数,那么就可以使用其中的变量了。
匿名函数:其实也是闭包的一种。
(function(i){console.log(i)})(x);
结果为x。
函数的继承:
function game(){
this.gtime=100;
this.action=function(){};
}
function gamer(){
this.action=function(){
console.log("run")
}
}
gamer.prototype=new game();
var gamer1=new gamer();
console.log(gamer1);
gamer1.action();
原型链:
new gamer()先找到原型(如果有则执行,没有就不执行),执行原型里面的代码,再找原型的原型,也就是最大的object对象...再执行自己的代码。
数据运算:
加好两端如果有字符串,就按照字符串拼接处理,如果没有就按照算数运算处理。
减号两端都是按照算数运算处理。