JavaScript中的Function类

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

三种创建函数的方法:

JavaScript代码

// 方法一  
function sum(num1, num2) {  
  return num1+num2;  
}  
  
//方法二  
var sum = function(num1, num2) {  
  return num1+num2;  
};  
  
//方法三  
var sum = new Function(“num1”, “num2”, “return num1+num2;”);  

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

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

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

JavaScript代码

alert(sum(1, 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方法中传入的参数对象。

鸡啄米稿源:鸡啄米 (源链) | 关于 | 阅读提示

本站遵循[CC BY-NC-SA 4.0]。如您有版权、意见投诉等问题,请通过eMail联系我们处理。
酷辣虫 » 综合编程 » JavaScript中的Function类

喜欢 (0)or分享给?

专业 x 专注 x 聚合 x 分享 CC BY-NC-SA 4.0

使用声明 | 英豪名录