JavaScript学习笔记(四)——函数对象1

1.在JavaScript中,函数就是对象。函数对象连接到 Function.prototype。

因为函数是对象,所有它们可以像任何其他值一样被使用。函数可以存放在变量、对象和数组中,函数可以被当做参数传递给其他函数,函数也可以再返回函数。函数还可以拥有方法。

函数的与众不同之处在于它们可以被调用。

2.函数的定义

var add = function(a, b){
     return a + b;
};

function add(a, b){
     return a + b;
};

这两种定义方式效果一样。

3.函数调用

除了声明时定义的形式参数,每个函数接受两个附加参数:this arguments 。参数 this 的值取决于调用模式。javascript中有四种调用模式:方法调用模式、函数调用模式、构造器调用模式和apply调用模式。arguments是实际参数,它是一个数组,在函数内部可以直接访问。

当函数被调用时,实际参数(arguments)会按顺序赋值给形式参数。当实际参数(arguments)的个数和形式参数(parameters)的个数不匹配时,不会出错。如果实际参数过多了,超出的参数值将被忽略(但你还是可以通过arguments[ i ]来访问到它)。当实际参数过少,缺失的值将会被替换为undefined。对参数值不会进行类型检查:任何类型的值都可以被传递给参数。

4.函数调用模式

a.方法调用模式

当一个函数被保存为对象的一个属性时,我们称它为一个方法。当一个方法被调用时,this被绑定到该对象。在函数中通过this可以访问它所属对象的属性。

var obj = {
    "count":0,
    increment: function() {
        this.count +=1;
    }
};

b.函数调用模式

当一个函数并非一个对象的属性时,它被当做一个函数来调用。此模式下,this被绑定到全局对象。

若在内部函数中希望访问到外部函数的this,可以在外部函数中定义一个变量that并赋值为this,内部函数通过that来访问到this;也可以通过给内部函数传递一个值为this参数,内部通过参数名来访问this。

c.构造器调用模式

在一个函数前面带上new来调用。

d.Apply调用模式

apply方法接收两个参数。第一个是将被绑定给this的值。第二个就是一个参数数组。

5.函数返回

一个函数总是会返回一个值。如果没有指定返回值,则返回 undefined。

如果函数以在前面加上 new 前缀的方式调用,且返回值不是一个对象,则返回this(该新对象)。

6.异常

javascript中的异常处理机制与java相似。在javascript中,通过 throw 语句可以抛出一个自定义的exception 对象,该exception对象可以是任何对象

但在JavaScript内部的异常中,异常参数(即catch (e)中的e)是一个名为error的对象,可以通过new Error(message)来创建这个对象,异常的描述被作为error对象的一个属性message,可以由构造函数传入,也可以之后赋值。通过这个异常描述message,可以让程序获取异常的详细信息,从而自动处理。

function test(a){
    throw new Error("err");
    //throw "err"; 抛出的异常可以是任何对象,包括字符串、函数等。
}
try{
    test();
}catch(e){
    alert(e.message);
}




猜你喜欢

转载自blog.csdn.net/yycdaizi/article/details/6905392