|
源代码网推荐
五. 对象应用例程
再演示另一个关于Thermometer(温度计)对象的例子,它负责将不同的温度刻度进行转换:
<script language="JavaScript">
// constructor function Thermometer(degrees, scale) {
// methods this.convertToCelsius = convertToCelsius; this.convertToFahrenheit = convertToFahrenheit; this.raiseTemp = raiseTemp;
// action to take if (scale == "f" || scale == "F") { this.scale = scale; this.degreesF = degrees; this.degreesC = 0; this.convertToCelsius(); } else { this.scale = scale; this.degreesF = 0; this.degreesC = degrees; this.convertToFahrenheit(); } }
// conversion functions function convertToCelsius() { this.degreesC = (5.0/9.0) * (this.degreesF - 32.0); }
function convertToFahrenheit() { this.degreesF = ((9.0/5.0) * this.degreesC) + 32.0; }
// method to raise temperature function raiseTemp(num) { this.degreesF += num; this.degreesC += num; }
</script>
以上代码的含义是:构造器创建了一个对象,用一个温度和温度刻度对其进行初始化,然后运行转换函数来获取在另一种刻度下等值的温度。其中包含了一个 raiseTemp() 方法,以演示对象属性是如何修改的。
以下代码演示了如何在 HTML 文档中使用对象:
<script language="JavaScript">
// create an object instance a = new Thermometer(98.6, "f");
// access object properties alert("Temperature in Fahrenheit is " + a.degreesF); alert("Temperature in Celsius is " + a.degreesC);
// execute object methods a.raiseTemp(10); alert("Temperature in Fahrenheit is " + a.degreesF); alert("Temperature in Celsius is " + a.degreesC);
</script>
六. 传递对象参数
同可以向一个对象传递参数一样,也可以把对象传递给另一个对象。请看看以下的例子,其中包含两个对象构造器,设置第二个的目的是把一个对象作为参数来接收:
<script language="JavaScript">
// Room object // accepts area (sq. ft.) and colour (walls) as parameters function Room(area, colour) { this.area = area; this.colour = colour; }
// House object // accepts price as parameter function House(price, room) { this.price = price; this.obj = room; }
</script>
再看看如何使用它:
<script language="JavaScript"> Kitchen = new Room(500, "white"); DiningRoom = new Room(600, "white");
RedGables = new House(89000, Kitchen); alert(RedGables.obj.area); </script>
在这种情况下,新创建的Room对象的例示 "Kitchen"被传递给 House 对象 "RedGables"。使用一种分级结构,就可能通过House对象一直深入到Room对象并获取一个特定对象属性的值。这与许多DOM 对象的使用方法是相同的。
七. 获取及修改构造器信息
关于 JavaScript对象还有其它一些有趣的东西。比如,可以通过属性constructor(构造器)来获取一个对象的完整信息。以下例子演示了如何将其应用在 Sumthing对象构造器中:
<script language="JavaScript">
alpha = new Sumthing(23, 865); alert("The object constructor for alpha is " + alpha.constructor);
</script>
另外,还可以使用 prototype关键字向一个已经存在的对象中增加新的对象属性。比如,以下代码向刚才的Room 对象中增加属性:
<script language="JavaScript">
// Room object // accepts area (sq. ft.) and colour (walls) as parameters function Room(area, colour) { this.area = area; this.colour = colour; } Room.prototype.direction = "east";
</script>
以上代码运行后,将向Room对象构造器中增加了一个叫做direction的对象属性,它的值为east。接着,试一试存取这个对象属性:
<script language="JavaScript"> Kitchen = new Room(1000, "green"); alert(Kitchen.direction); </script>
最后,还可以用prototype关键字来增加对象方法
源代码网供稿. |