犀牛——第8章函数8.2函数调用

来源:互联网 发布:淘宝卖家一直不发货 编辑:程序博客网 时间:2024/04/30 07:25

8.2函数调用

有4种方式来调用JavaScript函数:

作为函数

作为方法

作为构造函数

通过他们的call()和apply()方法间接调用

8.2.1 函数调用

普通的函数调用表达式:

printprops({x:1});

var total = distance(0,0,2,1) + distance(2,1,3,5);

var probability = factorial(5)/factorial(13);

对函数调用的规定,调用上下文(this的值)是全局对象。然而在严格模式下,调用上下文则是undefined,以函数形式调用的函数通常不使用this关键字。

8.2.2方法调用

一个方法无非是个保存在一个对象的属性里的JavaScript函数。

如果有一个函数和一个对象o,则可以用下面的代码给o定义一个名为m()的方法:

o.m = f;

给对象o定义了方法m(),调用它时就像这样:

o.m();

或者,如果m()需要两个参数,调用起来则像这样:

o.m(x,y);

方法调用和函数调用有一个重要的区别,即:调用上下文。

例子:

var calculator = {//对象直接量

operand1:1,

operand2:1,

add:function(){

//注意this关键字的用法,this指代当前对象

this.result = this.operand1 + this.operand2;

}

};

calculator.add();//这个方法调用计算1+1的结果

calculotor.result //=>2

8.2.3 构造函数调用

如果函数或者方法调用之前带有关键字new,它就构成构造函数调用。

凡是没有形参的构造函数都可以省略圆括号,比如,下面这两行代码是等价的:

var o = new Object();

var o = new Object();

构造函数调用创建一个新的空对象,这个对象继承自构造函数的prototype属性。构造函数视图初始化这个新创建的对象,并将这个对象用做其调用上下文,因此构造函数可以使用this关键字来引用这个新创建的对象。

8.2.4 间接调用

JavaScript中的函数也是对象,和其他JavaScript对象没什么两样,函数对象也可以包含方法。其中的两个方法call()和apply()可以用来间接地调用函数。两个方法都允许显示指定调用所需的this值。











0 0
原创粉丝点击