MooTools教程(4):函数和MooTools

2016-02-20 00:41 7 1 收藏

图老师小编精心整理的MooTools教程(4):函数和MooTools希望大家喜欢,觉得好的亲们记得收藏起来哦!您的支持就是小编更新的动力~

【 tulaoshi.com - Web开发 】

今天开始MooTools系列教程的第4讲。如果你还没有看过上一讲,请先查看上一篇教程。今天我们先不讲MooTools,而是讲一讲JavaScript中的函数(function)的基本知识。

但是,为了符合MooTools这个主题,你需要知道在哪里该使用MooTools的函数。此前,我们已经在我们的所有示例代码中,把代码都放在domready方法中。当我们需要把它放在domready的外面时,我们使用了函数(function)。在你在domready里面调用函数之前,函数并不会被执行。

一般来说,一种比较好的方式是尽可能地把你的函数代码都放在页面之外的某一个地方,然后通过JavaScript应用来调用它们。当你只是写代码玩玩,可能把所有的东西写在一个页面上更容易一些。在这个教程中,我们使用下面的约定:

参考代码:  script type=   window.addEvent(, () {      }); /script

所有的例子都遵循这个格式,当页面载入的时候(load)执行函数代码。在每个函数的下面,都有一个相应的按钮,你可以点击它们,然后看到结果。这是通过使用MooTools的事件处理来完成的,明天我们将会讲到这个。

函数基础

在JavaScript中,有几种方式来定义函数,由于我们的主题是讲解MooTools,因此我们将选择MooTools的首选方式。下面的示例是一个函数定义的开始。我们什么了一个变量,并命名为simple_function,并吧这个变量定义为一个函数:

参考代码:   simple_function = (){

然后我们给这个函数增加了一个alert语句,当函数被调用的时候就会执行:

参考代码:  alert();

最后,我们以一个花括号结束这个函数的定义:

参考代码:  }

这个关闭花括号看起来是一件非常简单的事情,但是很多时候要追踪这个问题却是一件很痛苦的事情。因此,适度地强迫对函数定义的关闭符号进行检查是个不错的主意。

在下面的例子中,我们把它们组合起来了。在声明这个函数之后,我们在页面加载后的domready事件里面添加了对这个函数的调用。可以点击例子下面的按钮查看调用函数simple_function();后的结果。

参考代码:    simple_function = (){     alert(); }   window.addEvent(, () {          simple_function(); });

单个参数

虽然你有很多代码可以轻松地随时调用,这已经很有用了,但是如果你可以给它传递参数(信息)进行处理,这将会更有用。要在函数中使用参数,你需要在function后面的括号中添加一个变量,就像这样:

参考代码:   name_of_function = (name_of_the_parameter){      }

一旦你这样做了,在这个函数内部就可以使用这个变量了。尽管你可以给参数取任何你想要的名字,但是让参数名更有意义是个不错的选择。举个例子来说,如果你要传递一个小镇的名字,可能你把参数命名为town_name比其他更模糊的名字要好一些(比如user_input)。

在下面的例子中,我们定义了一个只带有一个参数的函数,并在弹出对话框中显示这个变量。请注意,信息的第一部分被单引号包含起来了,而参数没有。当你要把参数和硬编码的字符串连接在一起,你需要用加号(+)运算符把他们连接起来,就像下面一样:

参考代码:   single_parameter_function = (parameter){     alert( + parameter); }   window.addEvent(, (){         single_parameter_function(); });

多个参数

JavaScript没有限制在一个函数中可以定义的参数的个数。一般来说,要让传给函数的参数个数尽可能地少,这会使代码更具可读性。函数中定义的多个参数使用逗号分割,其它行为这和单个参数函数一样。下面的示例中的函数带有两个数字,并把它们的和赋值给第三个数字,就像这样:

参考代码:   third_number = first_number + second_number;

这里加号(+)运算符的使用和把这些结果连接成字符串略有一些不同:

参考代码:  alert(first_number +  + second_number +  + third_number);

虽然这个初一看起来可能有些混乱,但是实际上却非常简单。如果你在两个数字之间使用加号(+),你就是把它们加在一起。如果你在任意组合的数字和字符串之间使用加号(+),那么就是把所有的东西作为字符串连接起来。

参考代码:   two_parameter_function = (first_number, second_number){           third_number = first_number + second_number;            alert(first_number +  + second_number +  + third_number); }   window.addEvent(, (){ two_parameter_function(, ); });

返回值

在一个弹出对话框中显示一个函数的执行结果可能很有用,但是有些时候你可能需要在其他地方用到这个结果。要完成这个任务,你需要使用函数中的return功能。下面的示例代码中,函数和上面的示例一样,不过这里不是弹出一个对话框,而是返回两个数字相加后的结果:

参考代码:   third_number;

你会发现,我们也在domready中做了更多的事情。为了显示这个结果,我们把这个函数的返回值赋值给了一个名称为return_value的参数,然后把它显示在弹出对话框中。

参考代码:   two_parameter_returning_function = (first_number, second_number){      third_number = first_number + second_number;      third_number; } window.addEvent(, (){      return_value = two_parameter_returning_function(, );     alert( + return_value); });

把函数作为参数

如果你看看MooTools的domready里面我们包装的东西,你会注意到我们把一个函数作为参数传递进去了:

参考代码:  window.addEvent(, (){ });

一个像这样把函数作为一个参数传递进去的函数称为匿名函数:

参考代码:  (){      }

在第一篇教程的评论中,Boomstix指出了在domready中不使用匿名函数的一种替代方式。这种方式就是这样的:

参考代码:    domready_function(){      }   window.addEvent(, domready_function);

我不知道这两种方式在性能和功能性上的任何明显差别,因此我认为这基本上只是一个风格习惯而已。我们会继续坚持我们的方式,如果有任何人知道这些差别请告诉我们。

代码示例

为了刺激你明天的食欲(和弥补今天对MooTools的缺少),我写了一个没有什么意义的函数,可以让你随意改变这个页面的背景:

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)参考代码:   changeColor = (){                     red   = $().get();      green = $().get();      blue  = $().get();                      red   = red.toInt();     green = green.toInt();     blue  = blue.toInt();                           red   = red.limit(, );     green = green.limit(, );     blue  = blue.limit(, );                       color = [red, green, blue].rgbToHex();                       $().setStyle(, color);   }    resetColor = (){                    $().setStyle(, ); }   window.addEvent(, (){                    $().addEvent(, changeColor);     $().addEvent(, resetColor); });


红(R)
绿(G)
蓝(B)

延伸学习...

包含MooTools 1.2核心库、一个外部JavaScript文件、一个简单的html页面和一个css文件。

更多关于JavaScript函数的内容

我没有很好的关于JavaScript函数的资源,如果有人知道的话请告诉我。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/webkaifa/)

有关示例的文档

来源:http://www.tulaoshi.com/n/20160220/1632382.html

延伸阅读
标签: Web开发
今天我们来看一看MooTools给我们提供的额外的一些处理字符函数。这只是MooTools字符串处理中的一部分,并不包含一些神秘的函数(比如toCamelCase())和使用正则表达式处理字符串的函数。我们会在以后另外用一讲来将一下正则表达式的基本知识和在MooTools下的使用。 在开始之前,我想先花一点时间来看一下字符串函数是怎么调用的。在我的例...
标签: Web开发
今天,我们继续探索一下这个库的Fx部分,我们将学习如何使用Fx.Morph(它从本质上可以让你同时渐变多个样式表属性),然后我们再检查一下应用到Fx.Tween和Fx.Morph的一些Fx选项,最后我们将看看如何使用Fx事件,譬如onComplete和onStart。通过这些选项和事件,我们可以获得更好的控制权来控制形变动画。 Fx.Morph 创建一个新的Fx.Morph ...
标签: Web开发
我们已经学习过如何来选取DOM元素,怎么创建数组,怎么创建函数,怎么把事件添加到元素,今天我们来深入地学习一下如果操纵HTML元素。通过MooTools 1.2,你可以添加新元素到一个HTML页面中,也可以删除元素,以及改变任何样式或者元素参数,这些都非常容易。 基本方法 .get(); 这个工具可以让你获取元素的属性(property)。元素的属性是...
标签: Web开发
今天我们开始第三讲,我们今天主要看一下。和我们看到的其他的MooTools函数一样,这些方法使用起来都非常简单,但是功能都很强大。Tween可以让你添加那些极炫的效果可以很平滑地发生形变动画,从而改善你的用户体验。 Tween的快捷方法 我们通常都从基本知识入手,不过MooTools 1.2只为渐变(tween)提供了这样极其出色的快捷方法,它们使用...
标签: Web开发
  Portotype虽然是强大的,和script.aculo.us结合可以做出很多完美的效果,可是它里面有太多我不想用的代码,或许这是我后面选择mootools的主要原因,我只是想选择性的打包。其实当时我也很想用一下jquery,仔细对比了一下,我还是觉得mootools更加的适合于我。有比较,才有机会去选择,我想从下面5个方面讨论一下。 可读性VS简洁 &...

经验教程

787

收藏

53
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部