预览加载中,请您耐心等待几秒...
1/4
2/4
3/4
4/4

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

JavaScript中的function使用方法 JavaScript入门易,可深究起来,竟搞得我如此混乱,这恐怕就是弱类型语言的特点吧?写惯了C++,还真是不适应。 近日在google上搜来搜去,学习了半天function、this和prototype,这就总结一下,但愿能把它们理清楚。 这是第一篇,关于JavaScript中的function。 参考了一些文章,我认为JavaScript中的function可以有以下两种用法: 一是做“普通逻辑代码容器”,也就是我们通常意义上的函数、方法,和我们C/C++里的函数没什么大分别,只是写法稍有不同、用法更加灵活; 二是做对象,有的地方叫它函数对象,其用法和作用有点类似C++里的class(类)。 下面来详细说说这两种用法。 一、function用作普通函数 function用作普通函数的定义方法如下: functionfunctionName([argument1][,argument2][...,argumentN]){ [statements] } 具体写法有以下两种: 1.定义式: 如: functionmultiply(x,y){ returnx*y; } 它的使用方法如下: varproduct=multiply(128,128);//product=16384 2.声明式: 如: varproduct=functionmultiply(x,y){ returnx*y; } 需要说明的是: 1.用作普通函数时,function几乎可以在脚本的任何地方定义,但推荐在一个HTML文档的<head></head>区域里定义,这样可以保证如果另一个脚本需要立即使用这里声明的函数时,就可以立即使用它。 2.上述两种具体写法在重复定义的时候也有一些差别,如下 若做如下函数定义: varexample=function(){ return1; } example(); varexample=function(){ return2; } example(); 得到结果是 1 2 若做如下函数定义: functionexample(){ return1; } example(); functionexample(){ return2; } example(); 那么会得到另一种结果: 2 2 在采用定义式创建同名函数时,后创建的函数会覆盖先创建的函数。这种差别是由于JavaScript解释引擎的工作机制所导致的。由于注册函数时,后定义的函数重写了先定义的函数,因此无论调用语句位于何处,执行的都是后定义的函数。相反,对于声明式创建的函数,JavaScript解释引擎会像对待任何声明的变量一样,等到执行调用该变量的代码时才会对变量求值。因此当执行第一个example()调用时,example函数的代码就是首先定义代码;而当执行第二个example()调用时,example函数的代码又变成了后来定义的代码。 当然,好的习惯是不要这样写,也不要试图利用“声明式”的这种机制来投机取巧。不过,函数重载除外,但是,javascript里好像并没有函数重载这种写法吧? 二、函数对象 1.基本概念 在JavaScript中,function还可以被用做对象(或者窃以为该叫做类更合适)。这也许听起来很怪异也很难理解,但考虑到JavaScript既然是一种面向对象的语言,那么它里面总得可以实现类和对象吧?看看下面的用法就知道了——用function来实现类和对象倒也真无可厚非。 首先要说明一下的是与function有密切关系的this这个东西。“JavaScript在解析代码时,会为声明或定义的函数指定调用对象。所谓调用对象,就是函数的执行环境。”也就是说,在函数体中,可以以this关键字来使用它的调用对象(关于this的具体用法,另作讨论,详见下篇)。“如果函数体内有以关键字this声明的变量,则this引用的就是调用对象。” 下面就来看看作为函数对象的function通常是怎么写的: functionAnimal(sort,character){ this.sort=sort; this.character=character; } 上面的代码就定义了一个函数对象,其意义与C++中的class相似,它的构造函数就是这个函数Animal。其实看起来跟上面的普通函数没什么分别,换句话说,按照上面介绍的普通函数定义方法写,结果就会得到一个函数对象,窃以为JavaScript中其实只存在函数对象,不存在我们传统意义上的“函数”,只是它的使用方法灵活多样,可以按照我们传统的使用方法functionName(…)直接调用,也可以按下面的方法作为对象使用: vardog=newAnimal(”mammal”,”fo