Javascript实例教程(5-2)

属性同样也可以从函数中来创建,这样,你只需要增加一行到Person函数中就可以创建属性了: function Person(name, age, colour) {

this.name = name;

this.age = age;

this.colour = colour;

this.birthYear = (new Date()).getYear() - this.age;

}

以上的Person函数定义了第四个属性:birthYear,它代表每一个Person的出生年份。这里要注意,这一增加的行是调用一个内置的Date构造器,它返回一个包含了当前日期和时间的Date对象。

这是一个非常懒惰的方法来访问一个Date变量。所以使用下面的代码会显得更准确些,更有可读性:

var today = new Date();

this.birthYear = today.getYear() - this.age;

当然,有许多方法来对JavaScript程序进行“压缩”。通过插入对象到代码中,你就可以处理绝大多数的变量。

这个Date对象比起我们上面定义的Person对象来说更复杂,因为它包括了访问方法(accessor/get)以及操作方法(manipulator/set)。同时,增加简单的对象方法到JavaScript中是可能,下面是详细的例子代码:

 1<script language="JavaScript">   
 2  
 3<!-- Hide from older browsers   
 4  
 5  
 6function Person(name, age, colour) {   
 7  
 8this.name = name;   
 9  
10this.age = age;   
11  
12this.colour = colour;   
13  
14this.birthYear = (new Date()).getYear() - this.age;   
15  
16this.toString = printPerson; // 这里定义the Person.toString() 方法   
17  
18this.isOlder = isOlder; // 这里定义Person.isOlder(Person) 方法   
19  
20}   
21  
22  
23function printPerson() {   
24  
25var text = this.name + " was born in " + this.birthYear +"<br>";   
26  
27text += "and is " + this.age + " years old.<p>";   
28  
29return text;   
30  
31}   
32  
33  
34function isOlder(otherPerson) { // 这里定义是否第一个人是更老的   
35  
36return (this.age > otherPerson.age); // 返回布尔型数值   
37  
38}   
39  
40  
41//下面的代码用于测试我们的函数   
42  
43  
44var body1 = new Person("Patrick", 22, "red");   
45  
46var body2 = new Person("Betty", 21, "green");   
47  
48  
49document.write(body1); //这里为Person.toString()创建一个调用   
50  
51document.write(body2);   
52  
53  
54document.write(body1.name);   
55  
56document.write((body1.isOlder(body2)) ? " is " : " is not "); // 是否更老?   
57  
58document.write("older than " + body2.name);   
59  
60  
61// Stop hiding -->   
62  
63</script>
Published At
Categories with 网页设计
comments powered by Disqus