网站地图    收藏   

主页 > 前端 > javascript >

js function函数定义详解介绍

来源:自学PHP网    时间:2014-09-19 14:47 作者: 阅读:

[导读] 在js中function是定义函数的一个命令了,Js中函数其实是个对象,我们可以使用new function来创建了,下面给大空详细介绍function定义函数的方法。...

其实我们常用的定义函数的写法只是写法之一,写法其实有三种:

1 声明式的(静态的)
2 对象式的(动态的)
3 字面量式的(也被称为函数表达式)

以下是引用片段:

 代码如下 复制代码

function func1(…){…}
var func2=function(…){…};
var func3=function func4(…){…};
var func5=new Function();


下面分别介绍一下。
 
1 声明式的

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

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

可以用function关键字定义一个函数,并为每个函数指定一个函数名,通过函数名来进行调用。在JavaScript解释执行时,函数都是被维护为一个对象,这就是要介绍的函数对象(Function Object)。

在JavaScript中,函数对象对应的类型是Function,正如数组对象对应的类型是Array,日期对象对应的类型是Date一样,可以通过 new Function()来创建一个函数对象,也可以通过function关键字来创建一个对象。为了便于理解,我们比较函数对象的创建和数组对象的创建。先 看数组对象:下面两行代码都是创建一个数组对象myArray:

以下是引用片段:

 代码如下 复制代码
var myArray=[];
//等价于
var myArray=new Array();
同样,下面的两段代码也都是创建一个函数myFunction:
function myFunction(a,b){
return a+b;
}
//等价于
var myFunction=new Function("a","b","return a+b");

 
2 对象式的

通过和构造数组对象语句的比较,可以清楚的看到函数对象本质,前面介绍的函数声明是上述代码的第一种方式,而在解释器内部,当遇到这种语法时,就会自动构 造一个Function对象,将函数作为一个内部的对象来存储和运行。从这里也可以看到,一个函数对象名称(函数变量)和一个普通变量名称具有同样的规 范,都可以通过变量名来引用这个变量,但是函数变量名后面可以跟上括号和参数列表来进行函数调用。

用new Function()的形式来创建一个函数不常见,因为一个函数体通常会有多条语句,如果将它们以一个字符串的形式作为参数传递,代码的可读性差。下面介绍一下其使用语法:


写法:

 代码如下 复制代码
var func =new Function("param1","param2",..."function body");


以下是引用片段:

 代码如下 复制代码

new  Function("a", "b", "c", "return a+b+c")
new Function("a, b, c", "return a+b+c")
new Function("a,b", "c", "return a+b+c")

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

3 字面量式

Function是所有函数对象的基础,而Object则是所有对象(包括函数对象)的基础。在JavaScript中,任何一个对象都是 Object的实例,因此,可以修改Object这个类型来让所有的对象具有一些通用的属性和方法,修改Object类型是通过prototype来完成

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

例子:var func=function funcTest(id){alert(id)}
说明:这种写法的函数名,只有在函数体内可见,可用于实现递归函数。
 

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

 代码如下 复制代码


Object.prototype.getType=function(){
return typeof(this);
}
var array1=new Array();
function func1(a,b){
return a+b;
}
alert(array1.getType());
alert(func1.getType());

自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习

京ICP备14009008号-1@版权所有www.zixuephp.com

网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com

添加评论