0

可能重复:
如何动态调用 JavaScript 对象的方法

我有不同属性的功能

setCar : function() {}
setBike : function() {}
setAirPlane : function (){}

我有格式键值的对象

var json = { Car : "Car1",
             Bike : "Bike1",
             AirPlane  : "test1" }

我想根据对象值以动态方式调用 set 函数:

 updateProperties : function(json) {        
 for ( var property in json) {
     //set + property (AdditionalProperties[property])
 };   

在属性中我有函数的名称(Car,Bike,AirPlane),在 AdditionalProperties[property] 我有属性的值(Car1,Bike1,test1.

有可能吗?

4

2 回答 2

4

为什么不?可以这样做:

for (var property in obj) {
    typeof funcContainer["set" + property] === "function"
      && funcContainer["set" + property](obj[property]);
}

在哪里funcContainer

var funcContainer = {
    setCar : function() {},
    setBike : function() {},
    setAirPlane : function() {}
};
于 2013-01-31T12:29:47.923 回答
1

如果

objWithFuncts = {
...
setCar : function() {}
setBike : function() {}
setAirPlane : function (){}
...
}

比你能做的:

 updateProperties : function(json) {        
 for ( var property in json) {
       if(json.hasOwnProperty(property) && objWithFuncs["set" + property])
           objWithFuncs["set" + property](AdditionalProperties[property])
 }; 

请记住,您可以使用索引访问对象的任何属性,例如:obj["propName"] 等于obj.propName

于 2013-01-31T12:31:27.063 回答