JavaScript函数,闭包,原型,面向对象学习笔记

  

<强>断言
  

  

单元测试框架的核心是断言方法,通常叫assert ()。
  

  

该方法通常接收一个值,需要断言的值,以及一个表示该断言目的的描述。
  

  

如果该值执行的结果为真的,断言就会通过;
  

  

否,则断言就会被认为是失败的。
  

  

通常用一个相应的通过(通过)/失败(失败)标记记录相关的信息;

        函数声明(价值,desc) {   让李=document.createElement(‘李’);   李。className=价值& # 63;“通过”:“失败”;   li.appendChild (document.createTextNode (desc));   . getelementbyid(结果).appendChild(李);   }//断言函数   函数声明(价值,desc) {   如果(值){   控制台。日志(033年\ [32 m 033 {desc} \ [0 m”);//断言通过绿色字体   其他}{   控制台。日志(033年\ [31 033 $ {desc} \ [0 m ');//断言失败红色字体   }   }      

<强>函数
  

  
      <李> JavaScript是一门函数式语言李   <李>在JavaScript中,函数是第一型对象。函数可以共处,可以视作为其他任意类型的对象。就像普通的JavaScript数据类型,,函数可以被任意变量进行引用,或声明成对象字面量,甚至可以将其作为函数参数进行传递。   <李>函数是第一型对象李   <李>可以通过字面量进行创建。   <李>可以赋值给变量,数组或其他对象的属性。   <李>可以作为参数传递给函数。   <李>可以作为函数的返回值进行返回。   <李>可以拥有动态创建并赋值的属性。   <李>命名一个函数时,该名称在整个函数声明范围内是有效的。如果函数声明在顶层,窗户对象上的同名属性则会引用到该函数。   <李>所有的函数都有一个名字属性,该属性保存的是该函数名称的字符串。匿名函数的名字属性值为空。   <李>在JavaScript中,作用域是由函数进行声明的,而不是代码块。声明的作用域创建于代码块,但不是终结于代码块(其他语言是终结于代码块的)   
        如果(窗口){   var x=123;   }   警报(x);   之前      

执行代码后,会弹出123,是因为JavaScript在大括号关闭处并没有终止其作用域。
  

  
      <李>变量声明的作用域开始于声明的地方,结束于函数的结尾,与代码嵌套无关。   <李>命名函数的作用域是指声明该函数的整个函数范围,与代码嵌套无关;李   <李>对于作用域声明,全局上下文就像一个包含页面所有代码的超大型函数。   <李>所有的函数调用都会传递两个隐式参数:论点和这李   
  

<强>作为函数进行调用

  

如果一个数不是作为方法,构造器,或者通过应用()或调用()进行调用的,则认为它是“作为函数”进行调用的。

        函数忍者(){};   忍者()      var武士=function () {};   武士()      
      <李>以这种方式调用时,函数的上下文是全局上下文——窗口对象。   
  

<强>作为方法进行调用

  

当一个函数被赋值给对象的一个属性,并使用引用该函数的这个属性进行调用时,那么函数就是作为该对象的一个方法进行调用的。

        var 0={};   o。无论=function () {};    o.whatever ();      
      <李>将函数作为对象的一个方法进行调用时,该对象就变成了函数上下文,并且在函数内部可以以这参数的形式进行访问。   
  

作为构造器进行调用

  
      <李>将函数作为构造器进行调用,需要在函数调用前使用新关键字
      李   
  

创建一个新的空对象,
  

  

传递给构造器都对象是这参数,从而成为构造器的函数上下文;
  

  

如果没有显式都返回值,新创建的对象则作为构造器的返回值进行返回。

        函数忍者(){   这一点。潜行=function(){返回;}   }      var ninja1=new忍者();   var ninja2=new忍者();      

构造器的目的是通过函数调用初始化创建新的对象。

  

函数调用方式差异