• 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对象...再执行自己的代码。

    数据运算:

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

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

  • 相关阅读:
    linux常用操作命令
    golang的goroutine调度机制,GC机制
    数据库原理
    linux各文件夹的作用
    c++面试题
    EF 新增数据时提示it has a DefiningQuery and no <InsertFunction> element exists in the <ModificationFunctionMapping> element
    EF 批量插入,sqlhelper 批量插入
    C# 自己用到的几个参数转换方法
    asp.net MVC EF Where 过滤条件怎么写
    EF Code First 数据迁移命令
  • 原文地址:https://www.cnblogs.com/zaxxm/p/4068683.html
Copyright © 2020-2023  润新知