JavaScript的Function对象

Js函数其实是个对象,但我总拿它和Java的方法一样对待,因为它的写法明明就是一个“函数”。其实我们常用的定义函数的写法只是写法之一,写法其实有三种:声明式的(静态的)、对象式的(动态的)、字面量式的(也被称为函数表达式)

    Js函数其实是个对象,但我总拿它和Java的方法一样对待,因为它的写法明明就是一个“函数”。其实我们常用的定义函数的写法只是写法之一,写法其实有三种:声明式的(静态的)、对象式的(动态的)、字面量式的(也被称为函数表达式)。下面分别介绍一下。

 

1、声明式

    写法:function func(param1,param2…){…};

    这是最常用的,它是静态的,和Java的静态方法类似,在页面加载时就被解析,且只解析一次。这个我就不细说了,程序员都知道。

 

2、对象式

    写法:var func =new Function("param1","param2",..."function body");

    例子:var sayHi=new Funciton("toWhom","alert('hi'+toWhom)");

    说明:构造函数的参数个数不确定,倒数第一个形参就是函数体,其它的形参就是函数的形参。

    对象式(其实这是我给命的名,书中叫动态式我觉得欠妥,这种写法明明就是在创建对象)是动态的,因为它构造函数的参数都是字符串,可以动态改变。正是如此,函数体每创建一次,浏览器都要重新解析,性能肯定不如静态方式,但它也有它的优势,因为你可用利用它动态创建一个函数。

3、字面量式

    写法:var func=function [函数名可选,函数内可见](parms){...};

    例子:var func=function funcTest(id){alert(id)}

    说明:这种写法的函数名,只有在函数体内可见,可用于实现递归函数。

    字面量式多用于事件注册,如:obj.onclick=function(this){alert(this.id)}。

    无论用何种写法,实际上都是创建了一个函数对象,没有本质的区别。不能凭经验想当然把js函数看作是其他语言的“函数”,那样就会浪费它的灵活性,它可以像其它类型实例一样被当作参数传递。

少壮不努力,老大徒悲伤。——汉乐府古辞《长歌行》
0 不喜欢
说说我的看法 -
全部评论(
没有评论
关于
本网站属于个人的非赢利性网站,转载的文章遵循原作者的版权声明,如果原文没有版权声明,请来信告知:hxstrive@outlook.com
公众号