参考资料: 汇智网
JavaScript函数在定义时并不会去执行,只有我们在调用定义的函数时,它才会去执行。
在JavaScript中有四种方式调用函数,如下:
- 方法调用模式;
- 函数调用模式;
- 构造器调用模式;
- apply调用模式。
1. 方法调用模式
当一个函数被保存为对象的一个属性时,我们称它为一个方法。如果调用表达式包含一个提取属性的动作(即我们在讲解对象时说的.
操作符),那么它就被当做一个方法来调用。
//对象字面量
var myObj = {
param1: 1,
param2: 2,
sum: function (){
//this关键字指代当前的对象
return this.result = this.param1 + this.param2;
}
}
myObj.sum(); //=>3
2. 函数调用模式
函数调用模式即通常的函数调用,属于全局性调用。如下:
var add = function(a, b){
return a + b;
}
//函数调用模式
add(1,2); //=>3
上述代码等价于:
function add(a, b){
return a + b;
}
add(1,2);//=>3
3. 构造器调用模式
JavaScript中函数还可以是构造器.
将函数作为构造器来使用的语法就是在函数调用前面加上一个new
关键字. 如以下代码:
function Add() {
this.name = "汇智网";
this.sum = function (a, b){
return a + b;
}
}
// 构造器调用模式
var obj = new Add(); //obj是一个对象
obj.sum(1,2); //=>3
上述中的代码创建了一个构造函数Add,然后使用构造函数创建对象obj。这里使用了new关键字。然后使用对象调用sum()方法。
4. apply调用模式
JavaScript
中函数也是对象,也可以拥有方法。其中call()
和apply()
用来间接的调用函数。称之为apply
调用模式。
apply
方法让我们构建一个参数数组传递给调用函数。它也允许我们选择this
的值。 apply
方法接收两个参数,第一个是要绑定给this
的值,第二个就是一个参数数组。
语法:函数名.apply(对象, 参数数组);
示例:
var add = function (a, b) {
return a + b;
}
add.apply(null,[1,2]); //=>3
call
方法与apply
方法类似,区别在call
第二参数不是一个数组而是需要列举出来。比如上述中的代码用call
方法来实现,如下
var add = function (a, b) {
return a + b;
}
add.call(null,1,2); //=>3