[关闭]
@frank-shaw 2017-02-09T08:35:14.000000Z 字数 700 阅读 1198

理解JavaScript的函数

javaScript


有些时候觉得,函数根本就不算事。但是有时候,又会产生一点困惑。所以,趁着现在有空,将JavaScript的函数好好捋一捋。

函数是对象,函数名是指针

在JavaScript中,函数是对象(设计者就是这样设计的)。每个函数都是Function类型的一个实例(Function类型继承自Object类型),而且和其他引用类型一样具有属性和方法。

由于函数是对象,那么自然就很容易理解函数名是一个指向函数对象的指针。理解了这个,那么久很容易理解为什么JavaScript中没有重载啦!

由于函数名仅仅是指向函数对象的指针,那么函数名就与其他包含对象指针的其他变量没有什么不同啦,可以作为另一个函数的参数(但需要记住,是作为值的方式传递的)。

函数内部

对象

在函数内部,都包含的两个对象是:arguments和this。arguments的主要作用是保存函数的参数,而this引用的是函数执行的上下文环境。

属性

在函数内部,都包含的属性有四个:length、prototype、apply()与call()。

length属性表示函数希望接收的形式参数的个数。

而prototype属性则是因为JavaScript中所有引用类型都具有该属性(其存放的是引用类型的所有实例的公共方法或公共属性),从而函数作为Function类型的实例,自然也就会有这个属性啦。prototype属性是最难以理解的属性,而原型链模型的设计也与此息息相关。

apply()与call()则是函数所独有的两个方法。这两个方法的用途都是在特定的作用域中调用该函数,简单说就是设置函数体内this对象的值。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注