在对象内部乘以两个属性

时间:2014-05-23 14:29:28

标签: javascript oop

我的自行车方法有两个属性。前档和后档。我想要另一个属性,这将是一个新的属性,称为齿轮比属性,可以通过乘以前后齿轮数得到。我写的代码连续错误。它可以修复。

function write() {
    var bicycle = {
        price: 20000,
        model: "raleigh",
        front_gear: 3,
        rear_gear: 7,
        gear_ratio: function () {
            ratio: this.front_gear * this.rear_gear,
        }
    }
    document.write("this is a " + bicycle.gear_ratio.ratio + " speed bike");
}
window.onload = write;

2 个答案:

答案 0 :(得分:7)

    gear_ratio: function () {
        return this.front_gear * this.rear_gear
    }
    document.write("this is a " + bicycle.gear_ratio() + " speed bike");

我能推荐你做的最好的事情。如果你还想要一个对象:

    gear_ratio: function () {
        return {
             ratio: this.front_gear * this.rear_gear
        }
    }
    document.write("this is a " + bicycle.gear_ratio().ratio + " speed bike");

可以编写如下内容:

function bike(settings){
     // Make settings an object so we can use it always
     if (typeof settings != 'object')
          settings = {}

     // if settings has a price use that, otherwise use 0
     this.price = settings.price || 500;

     this.model = settings.model || "custom";

     this.front_gear = settings.front_gear || 2;

     this.rear_gear = settings.rear_gear || 2;

     this.__defineGetter__("gear_ratio", function(){
        return this.front_gear * this.rear_gear;
     });

}

function write() {
    var bike1 = new bike({
        price: 20000,
        model: "raleigh",
        front_gear: 3,
        rear_gear: 7,
    });
    var bike2 = new bike({
        front_gear: 3,
    });
    document.write("<br /> bike 1 is a " + bike1.gear_ratio + " speed bike by " + bike1.model + " costing " + bike1.price);
    document.write("<br /> bike 2 is a " + bike2.gear_ratio + " speed bike by " + bike2.model + " costing " + bike1.price);
}

隐含函数调用的地方,但这需要你的自行车是一个实际的实例化类,并且不会在每个浏览器中工作,并且更难调试。如果您想要更好的解释,请告诉我。

答案 1 :(得分:-6)

更改此

window.onload = write;

到这个

window.onload = write();

你以不恰当的方式调用该函数