代码清单5-5 classicalInheritance.js
function Vehicle() {
var wheelCount = 4;
var curbWeightInPounds = 4000;
this.getWheelCount = function() {
return wheelCount;
}
this.setWheelCount = function(count) {
wheelCount = count;
}
this.getCurbWeightInPounds = function() {
return curbWeightInPounds;
}
this.setCurbWeightInPounds = function(weight) {
curbWeightInPounds = weight;
}
this.refuel = function() {
return "Refueling Vehicle with regular 87 octane gasoline";
}
this.mainTasks = function() {
return "Driving to work, school, and the grocery store";
}
}
function SportsCar() {
this.refuel = function() {
return "Refueling SportsCar with premium 94 octane gasoline";
}
this.mainTasks = function() {
return "Spirited driving, looking good, driving to the beach";
}
}
function CementTruck() {
this.refuel = function() {
return "Refueling CementTruck with diesel fuel";
}
this.mainTasks = function() {
return "Arrive at construction site, extend boom, deliver cement";
}
}
需要注意,SportsCar和CementTruck对象没有定义自己的wheelCount和curbWeightInPounds属性,也没有相关的存取函数,因为这些属性和函数会从Vehicle对象继承。
与前面一样,需要一个简单的HTML页面来测试这些新对象。代码清单5-6列出了测试这些新对象的HTML页面。要特别注意createInheritance函数,看看如何使用这个函数在Vehicle和SportsCar对象之间以及Vehicle和CementTruck对象之间创建继承关系。还要注意describe函数有所修改,试图直接访问wheelCount和curbWeightInPounds属性。这样做会返回一个undefined值。
代码清单5-6 classicalInheritance.html
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
Examples of Classical Inheritance in JavaScript
分别点击页面上的各个按钮会得到图5-17所示的结果。正如所料,试图直接访问私有属性就会返回undefined。

- 评论:(0)
发表评论 点击这里获取该日志的TrackBack引用地址