每个函数都是Function类型的实例

  三种创建函数的方法:

JavaScript代码
  1. // 方法一  
  2. function sum(num1, num2) {  
  3.   return num1+num2;  
  4. }  
  5.   
  6. //方法二  
  7. var sum = function(num1, num2) {  
  8.   return num1+num2;  
  9. };  
  10.   
  11. //方法三  
  12. var sum = new Function(“num1”, “num2”, “return num1+num2;”);  

  最好不用方法三去创建函数,但是方法三可以更清晰的看到,函数就是一个对象,通过new实例化得到。而函数名就是一个保存此对象的引用。

  也正是因为函数名就是一个特殊的变量,所以,在JavaScript中,没有函数重载这一说,有的只是覆盖。

  函数声明提升:函数的声明可以提升到作用域的顶层,从而在函数创建之前调用函数也不回导致错误:

JavaScript代码
  1. alert(sum(1, 2));  
  2. function sum(a, b) { return a + b }  

  上面说到函数其实就是一个特殊的变量,所以作为一个值的函数有以下作用:

  函数作为另一个函数的参数。

  函数作为另一个函数的返回值。

  在函数内部有两个特殊的对象:arguments, this 。

  arguments:arguments是一个类数组对象,里面保存着调用函数时传入函数的参数

  arguments有一个叫callee的属性,arguments.callee保存着这个函数的引用。

  this:this引用的是函数执行的环境对象。

  函数作为对象本身有两个对象:length, prototype 。

  length:length属性是声明函数时参数的个数。

  prototype:prototype里面保存着Function类的实例方法。

  函数作为对象有三个方法:call(), apply(), bind() 。

  三个方法的作用都是改变函数内部的this对象的引用。

  apply():apply方法的第一个参数是一个对象,用来替代调用该方法的函数的this,第二个是一个数组,保存着函数的参数。

  call():call方法的第一个参数的作用与apply相同,不同的是,后面的参数可以是多个,每一个都是函数的参数。

  bind():bind方法也可以修改作用域,但不同的时,此方法会返回一个新的函数,这个新的函数中的this会是bind方法中传入的参数对象。

除非特别注明,鸡啄米文章均为原创
转载请标明本文地址:http://www.jizhuomi.com/software/740.html
2017年6月30日
作者:鸡啄米 分类:软件开发 浏览: 评论:2