OOP设置方法无法正常工作

时间:2016-01-23 21:21:06

标签: javascript oop methods

所以我正在学习OOP。以下示例对我不起作用。而且无法弄清楚为什么。我已经将代码简化为两个变量。我的问题实际上是car1.setOdometer(1000)当我尝试时这行不起作用。基本上这行自动改变OdometerReading变量。然后,当我点击按钮3时,我得到了“Miles”的未定义行。

JS

function Car(Make, Miles) {
    this.make = Make;
    this.odometerReading = Miles;
    this.showInfo = function() {
        alert(this.make + this.odometerReading);
    };
    this.setOdometer = function(newMiles) {
        this.odometerReading = "newMiles";
    };
}

var car1 = new Car("X", 50);
var car2 = new Car("Y", 75);
car1.setOdometerReading(1000);  //this doesn't work for me.
//It winds up changing odometerReading on car1.showInfo() from the onset!

HTML

<input type="button" value="Car1" onclick="car1.showInfo()">
<input type="button" value="Car2" onclick="car2.showInfo()">
<input type="button" value="Change Car1" onclick="car1.setOdometer()">
书中的例子如上所述。但是当我点击Car1时,更改自动发生了。当我点击,更改Car1,那么Car1,我得到一个未定义的消息。

但是,当我进行以下更改时,代码可以正常工作。 在这里编辑'this.setOdometer':

this.setOdometer=function(newMiles){this.odometerReading=1000;}

删除

car1.setOdometerReading(1000);

我错过了什么,或者教程书是错的?

2 个答案:

答案 0 :(得分:1)

我看到类Car和Car类型的新对象。

答案 1 :(得分:1)

以下是工作实施的参考代码。正确设置odometerReading的{​​{1}}。错误只是因为拼写错误,我猜。

car1