Function类型
概述
函数是这样的一段JavaScript代码,它只定义一次,但可能被执行或调用多次。
Function类型是JavaScript提供的引用类型之一,通过Function类型创建Function对象。
在JavaScript中,函数也是以对象的形式存在的。
每个函数都是一个Function对象。函数名,本质就是一个变量名,是指向某个Function对象的引用。
在JavaScript中,函数除了可以通过函数定义语句或字面量表达式两种方式定义之外,还可以通过Function类型进行定义:
var add = new Function(
"num1",
"num2",
"var sum = num1+num2; return sum; "
);
Function的apply()方法用于调用一个函数,并且接收指定的this值,以及一个数组作为参数。其语法结构如下:
func.apply(thisArg,[argsArray])
thisArg参数:可选项,在func函数运行时使用的this值。
argsArray参数:可选项,一个数组或者类数组对象,其中的数组元素将作为单独的参数传给func函数。也可以使用argunents对象作为该参数。
返回值:调用该函数的返回结果。
var numbers = [5,6,2,3,7];
//通过apply()方法获取数组中最大值和最小值
var max = Math.max.apply(null, numbers) ;
var min = Math.min.apply(null, numbers);
Function的call()方法用于调用一个函数,并且接收指定的this值作为参数,以及参数列表。其语法结构如下:
func.call(thisArg,arg1,arg2, ...)
thisArg参数:在func函数运行时使用的this值。
arg1, arg2,…参数:指定的参数列表。
返回值:调用该函数的返回结果。
apply与call非常相似,不同之处在于提供参数的方式。
//通过call()方法获取数组中最大值和最小值
var max = Math.max.call(null, 5,6,2,3,7);
var min = Math.min.call(null, 5,6,2,3,7);
Function的bind()方法用于创建一个新的函数(称为绑定函数),并且接收指定的this值作为参数,以及参数列表。其语法结构如下:
fun.bind(thisArgl,arg1[, arg2[,...]])
thisArg参数:当绑定函数被调用时,该参数会作为原函数运行时的this指向。
arg1, arg2, …参数:当绑定函数被调用时,这些参数将置于实参之前传递给被绑定的方法。
返回值:返回由指定的this值和初始化参数改造的原函数拷贝。
Function的bind方法示例如下:
this.x = 9;
var module = {
x: 81,
getx: function() {
return this.x;
}
};
module.getx();// 返回81
var retrievex = module.getx;
retrievex(); // 返回9,在这种情况下,"this"指向全局作用域
// 创建一个新函数,将"this"绑定到module对象
var boundGetX= retrievex.bind(module);
boundGetX();// 返回81
在其他开发语言中,函数具有一种特性,叫做重载。所谓重载,就是定义多个同名的函数,但每一个函数接收的参数的个数不同,程序会根据调用时传递的实参个数进行判断,具体调用的是哪个函数。如下示例:
function add( a, b ){
return a + b;
}
function add( a, b, c ){
return a + b +c;
}
add( 1,2 );//结果为3
add( 1,2,3 ) ;//结果为6
今日金句
路是自己选的,咬着牙也得走完。
今日心情
随着任务量的加大,心理有点反感,不过最重要的一点是自己感觉自己很菜,但仔细想想也不是学不会。(自我施压)