挑战TJS Section1.2:方法的使用

挑战TJS Section1.2:方法的使用--什么是方法,如何使用定义的方法。

正篇

Yuni:这次我们来写显示当前时间的脚本。
Yuu:嗯嗯。
Yuni:我们要怎么显示当前的时间呢?
Yuu:首先是确定当前时间,我会使用方法来告诉你当前时间。
Yuni:方法?
Yuu:嗯,所以我先解释一下方法。
Yuni:好…好的。
Yuu:我想我们已经知道了System.inform()可以显示一个消息框对吧?
Yuni:嗯!
Yuu:实际上它就是一个方法
Yuni:哦,是吗?
Yuu:方法是一种指令,可以做很多事情比如告诉我们现在的时间或者用消息框显示一些消息。
Yuni:是这样啊。
Yuu:现阶段我觉得方法就是命令吧,不过严格来说还是有点区别的。
Yuni:OK。
Yuu:为了获得现在的时间,我们使用Date类的方法
Yuni:额…类?
Yuu:嗯…首先Date类…我觉得就像是一种职业。Date类的工作就是管理日期和时间相关的信息。
Yuni:啊,那Date类就是它的名字。
Yuu:嗯。Date类中有我们可以用的取得年、月、日、时、分、秒等等的方法。
Yuni:有这么多啊!?
Yuu:是啊。全部都使用上会让代码变得很复杂,这次我们先编写获取当前是几点几分的脚本。
/显示当前几点几分的脚本/

var d = new Date();
System.inform(d.getHours());    // 表示“小时”
System.inform(d.getMinutes());  // 表示“分钟”

Yuu:下面来执行上面的脚本。
Yuni:好。
/执行结果,实际执行结果以当前时间为准/

/第一个消息/

/后一个消息/

Yuni:嗯…现在是12点9分,嗯,第一个显示是12,第二个显示是9.
Yuu:嗯,没问题。下面我来解析脚本,首先是第一行。

var d = new Date();

Yuni:这句话完成了什么?
Yuu:嘛,要解释的话还要解释很多呢…不过简要来说,这就像是声明一个d先生,他可以在后面使用Date类中的方法。
Yuni:嗯?那为什么System.inform()不这么做呢?
Yuu:问得好。通常我们需要声明一个实体来调用一个类中的方法。但是System这个类有些特殊,在不使用实体的情况下我们也可以使用它的方法。
Yuni:呵呵( ´_ゝ`) フーン
Yuu:这是有点乱。不过现在我们记住System是一个特殊的类就是了。
Yuni:好吧。
Yuu:然后第二行的脚本显示了当前的小时。

System.inform(d.getHours());    // 表示“小时”

Yuu:getHours()Date类的一个方法,用于获取当前时间。写了d.getHours()这句,意味着d先生说“请给我执行getHours()这个方法”。
Yuni:最后的小括号()是做什么的?
Yuu:当你执行一个方法时,你可以向这个方法传递数据。传递的数据写在方法名后面的小括号中。在System.inform()的例子中,如果你想显示“消息”并编写了System.inform("消息");,这个“消息”就会显示在消息框中。译者注:如果一个变量能被显示成字符,将变量作为inform的参数就可以显示这个变量的内容。
Yuni:明白了。
Yuu:在时间的例子中我们不必在小括号中写任何内容,因为不需要向方法传递任何信息。毕竟我只想知道现在是几点。
Yuni:那,小括号是不是可以去掉?
Yuu:那样的话就会报错了。执行方法时候,小括号是必须的。
Yuni:了解。
Yuu:因为现在是12点9分,getHours()方法就告诉我们现在的小时数是12,然后d.getHours()部分就被12所代替…

System.inform(12);

Yuu:这就和先前的脚本长的一样了。你知道后面的结果了吗?
Yuni:嗯,现在的小时数就显示在消息框里了。
Yuu:这样来看,你也就明白第三行的含义了。
Yuni:嗯,getHours()告诉我们小时数,那getMinutes()就告诉我们分钟数吧?
Yuu:没错!
Yuni:嗯,现在是12点9分,所以d.getMinutes()部分会使用9来代替…

System.inform(9);

Yuni:怎么样?
Yuu:嗯,就是这样。
Yuni:哈,我做到了。
Yuu:嗯,这回就到这里啦。下次我们将讲解变量,虽然这次已经用到了。
Yuni:哦是吗?
Yuu:嗯,详情请听下回分解。
Yuni:好!

要点

  1. 方法是具有一定功能的,一系列命令的集合。方法通常依附于一个类,在其他编程语言中,它还有“函数”这个称呼。但教程中原则上我们使用“方法”来称呼。TJS中的方法和JavaScript中的方法是相似的。
  2. 方法通常需要一个实体(其实是对象)来调用,如正篇中的“d”。有一些类的方法比较特殊,它们可以不经过实体而被调用,如System.inform()。(它们被称为静态方法,后面章节有讲。)
  3. 方法可以存在参数。参数是方法处理时所需的数据。参数可以有一个也可以有多个,详细的内容后面的章节有讲。同样地,方法也可以有返回值。
  4. 方法的返回值会替代调用的部分,替代之后的脚本的运行结果和替代之前是相同的。如果一个方法A的参数是方法B调用的返回值,那方法B会先被执行。

导航

上一篇:挑战TJS Section1.1:脚本的写法
下一篇:挑战TJS Section1.3:变量
挑战TJS系列

留下评论