Javascript:如何在动态确定的变量上调用方法?

时间:2011-11-10 22:25:35

标签: javascript

我有一堆分配给变量的对象:

var ElectricCar = {
    start: function(){ alert('started electric car') }
};

var BioDieselCar = {
    start: function(){ alert('started bio diesel car') }
};

我想在其中一个对象上调用start方法,但我只有一个字符串可以使用:

var Starter = {
    init: function(carType){
        //... start the car that matches car type
    }
};

Starter.init('ElectricCar');

如何在适当的对象上调用start方法?

3 个答案:

答案 0 :(得分:5)

首选技术需要稍微重构一下代码。

var cars = {
    ElectricCar: {
        start: function(){ alert('started electric car') }
    },
    BioDieselCar: {
        start: function(){ alert('started bio diesel car') }
    }
};

var carType = 'ElectricCar';

// access the properties of cars by string
cars[carType].start();

这种技术更可取,因为它避免使用eval。通过将变量转换为对象的属性,可以按字符串引用它们。

答案 1 :(得分:1)

试试这个

this[carType]( );

答案 2 :(得分:1)

self[carType].start()
如果没有框架,

self就像窗口一样,但如果你有

则不同