我想在继承,原型和回调函数的Javascript中使用OOP。你能看看我的JSfiddel http://jsfiddle.net/Charissima/5g6GV/。 第一个问题已在Javascript OOP - inheritance and prototyping中解决,但不幸的是回调函数不再工作。Javascript OOP - 继承,原型,回调函数
function Car() {
this.totalDistance = 0;
};
Car.prototype.putTotalDistance = function(distance) {
this.totalDistance = distance;
};
Car.prototype.getTotalDistance = function() {
return this.totalDistance;
};
Car.prototype.drive = function(distance) {
this.totalDistance += distance;
return this.totalDistance;
};
function RaceCar() {};
RaceCar.prototype = new Car();
RaceCar.prototype.parent = Car.prototype;
RaceCar.prototype.drive = function(distance) {
return this.parent.drive.call(this, (distance * 2));
};
var myText;
car = new Car;
raceCar = new RaceCar;
car.putTotalDistance(200);
myText = 'car totalDistance = ' + car.drive(10) + ' - ok<br>';
raceCar.putTotalDistance(200);
myText += 'raceCar totalDistance before drive = ' + raceCar.getTotalDistance() + ' - ok<br>';
myText += 'raceCar totalDistance after drive = ' + raceCar.drive(10) + ' - ok<br><br>';
car.putTotalDistance(0);
raceCar.putTotalDistance(100);
var drivingFunctions = [car.drive, raceCar.drive];
myText += drivingFunctions[0](10) + '<br>';
try {
myText += drivingFunctions[1](100) + '<br>';
}
catch(err) {
myText += err + + '<br>'
}
document.body.innerHTML = myText;
我没有看到你的代码使用任何回调。请直接在您的问题中直接陈述实际问题,而不是依赖到其他站点的链接(jsfiddle并非总是可用)。描述所需的行为和实际行为。 “不再工作”的意思实际上是指,例如,浏览器的控制台是否存在错误,或什么也没有发生,或者发生了什么事情,但是这是错误的事情? – nnnnnn
我不想使用直接调用,但将函数放在数组中: var drivingFunctions = [car.drive,raceCar.drive]; 第一个是基类,第二个是继承类。 现在我打电话给drivingFunctions [0](10),结果是NaN,因为this.totalDistance是未定义的,我不知道为什么。 –
...然后我打电话给drivingFunctions [1](100),甚至值,我得到一个异常,错误文本为“this.parent is undefined”。 我希望我的解释清楚。 –