@frank-shaw
2017-02-09T16:35:14.000000Z
字数 700
阅读 1423
javaScript
有些时候觉得,函数根本就不算事。但是有时候,又会产生一点困惑。所以,趁着现在有空,将JavaScript的函数好好捋一捋。
在JavaScript中,函数是对象(设计者就是这样设计的)。每个函数都是Function类型的一个实例(Function类型继承自Object类型),而且和其他引用类型一样具有属性和方法。
由于函数是对象,那么自然就很容易理解函数名是一个指向函数对象的指针。理解了这个,那么久很容易理解为什么JavaScript中没有重载啦!
由于函数名仅仅是指向函数对象的指针,那么函数名就与其他包含对象指针的其他变量没有什么不同啦,可以作为另一个函数的参数(但需要记住,是作为值的方式传递的)。
在函数内部,都包含的两个对象是:arguments和this。arguments的主要作用是保存函数的参数,而this引用的是函数执行的上下文环境。
在函数内部,都包含的属性有四个:length、prototype、apply()与call()。
length属性表示函数希望接收的形式参数的个数。
而prototype属性则是因为JavaScript中所有引用类型都具有该属性(其存放的是引用类型的所有实例的公共方法或公共属性),从而函数作为Function类型的实例,自然也就会有这个属性啦。prototype属性是最难以理解的属性,而原型链模型的设计也与此息息相关。
apply()与call()则是函数所独有的两个方法。这两个方法的用途都是在特定的作用域中调用该函数,简单说就是设置函数体内this对象的值。