Javascript学习之Function对象详解
JavaScript中的Function对象,就是我们常说的函数对象。在JS中,所有的函数也是以对象的形式存在的。
语法
充当Function对象的构造函数使用,用于结合new关键字构造一个新的Function对象。
new Function( [ argName1 [, argName1 [, argNameN... [, funcBody ]]]] )
当作普通函数使用,其行为与用法一(使用new关键字)完全一致,相当于用法一省略了new关键字。
Function( [ argName1 [, argName1 [, argNameN... [, funcBody ]]]] )
返回值
Function()的返回值是Function类型,返回一个函数对象
注意
多数时候,你无需显示地通过new关键字来构造一个Function对象,因为在JavaScript中,你可以直接以function关键字形式声明函数
JavaScript在调用Function()构造函数时编译由该构造函数创建的对象。虽然它使您的脚本在运行时重新定义函数的情况下具有更大的灵活性,但它也会减慢代码的执行速度。为了避免减慢脚本速度,应尽可能少地使用Function()构造函数。建议优先考虑以function关键字的形式声明函数。
Function()会把传入的最后一个参数作为函数定义的执行代码,之前的所有参数均依次作为函数定义的参数。
如果没有指定任何参数,则表示该函数没有定义参数列表,函数的执行代码也为空
如果只指定了一个参数,则该参数将被视作函数的执行代码。如果你想定义一个参数、执行代码为空,请传入两个参数,第二个参数为空字符串即可:new Function("argName1", "")。
属性
argumentS
返回该函数执行时内置的argumentS对象。
caller
返回调用当前函数的函数。
conStructor
返回创建该对象的构造函数。
length
返回函数定义的参数个数。
方法
call()
调用当前Function对象,可同时改变函数内的thiS指针引用,函数参数一个个分别传入。
apply()
调用当前Function对象,可同时改变函数内的thiS指针引用,函数参数以数组或argumentS对象的形式传入。
toString()
返回定义该Function对象的字符串。
valueOf()
返回Function对象本身。