javascript实例教程(5-3)


 
  通过为Person对象重载Person.toString()方法,我们可以将Person对象作为字符串显示出来。每当Person对象被作为字符串引用的时候,pringPerson返回的数值就决定了该显示什么了。

上面脚本的输出如下所示:

Patrick was born in 76

and is 22 years old.


Betty was born in 77

and is 21 years old.


Patrick is older than Betty

从输出的结果我们可以看到年份是以两位数字表示的,如1976年只用76来表示。所以你可能想增加“19”到这两位数字的前面。不幸的是,“千年虫”的问题使得你处理起来有点棘手。而不同的浏览器处理Date对象的getYear()方法是不同的。

Year(年份)

Navigator浏览器

IE 3.x浏览器

IE 4.x浏览器

1998

98

98

98

1999

99

99

99

2000

2000

100

2000

2001

2001

101

2001



你可以从上面表格中发现最新的浏览器支持1999年之后四位的年份格式(如2000、2001)。不幸的是,老的浏览器处理年份的格式的时候给程序设计人员无尽的困惑。我经常使用的具体解决方法如下所示,与大家共享:

var thisYear = (new Date()).getYear();

thisYear = 1900 + (thisYear % 1900);

这里(thisYear % 1900)作用是将年份转换位IE 3.x格式并且增加1900以得到真实的年份(比如,2002年经过this Year%1900转换位IE 3.x格式位102,然后102再加上1900得到2002)。上面这两条语句可以适用于从1900年到3799年的处理,现在看起来这么长的时间是足够使用了。但是,为了避免类似于“千年虫”问题,我们应该再找出更好的解决方案,在本教程中就不给出了。另外,新的ECMA标准包括了一个名为getFullYear()的函数,它是返回完整的年份格式,但是这个函数只能被Navigator 4支持,在IE中是不能使用的。

最后对程序再做一点改进,我们可以修改People构造器以转换年份为YYYY格式,具体代码如下:

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

在JavaScript中使用对象的能力通常被许多程序设计人员所忽视。但是从本教程中,你应该可以看到使用对象可以使程序员设计出功能更强大的应用程序来的

本文作者:
« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3