JS高级部分(个人认为)

首先,我们要知道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对象...再执行自己的代码。

数据运算:

加好两端如果有字符串,就按照字符串拼接处理,如果没有就按照算数运算处理。

减号两端都是按照算数运算处理。

原文地址:https://www.cnblogs.com/zaxxm/p/4068683.html