我有一堆分配给变量的对象:
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方法?
答案 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就像窗口一样,但如果你有
则不同