在另一个对象中重用对象

时间:2010-09-24 21:56:02

标签: javascript object

我有一个包含另一个带翻译对象的对象。它看起来像这样:

var parent = { //parent object with a bunch of stuff in it
    countryAlerts:{ //area for country alerts
        "USA":{ //country
            en:"FAST", //alert text in English
            es:"RAPIDO" //alert text in Spanish
        },
        "Japan":{
            en:"FAST",
            es:"RAPIDO"
        }
    }
}

我想做这样的事情:

var parent = {
    countryAlerts:{
        "USA":fast,
        "Japan":fast
    }
}

var fast = {
    en:"FAST",
    es:"RAPIDO"
}

我似乎无法让它工作。我想引用这样的对象:parent.countryAlerts.USA.LANGUAGE

感谢任何帮助。

谢谢!

2 个答案:

答案 0 :(得分:2)

是的,您可以先定义fast

var fast = {
    en: "FAST",
    es: "RAPIDO"
};
var parent = {
    countryAlerts: {
        "USA" : fast,
        "Japan" : fast
    }
};

var lang = "en";

alert(parent.countryAlerts.USA[lang]); // "FAST"

请注意使用方括号表示法通过变量名访问对象的成员。

修改:回复评论:

  啊,这太傻了。谢谢!我现在有另一个问题。假设我想快速存储在父对象中。

你的意思是,像这样(伪代码)?

var parent = {
    fast : {
        en : "FAST",
        es : "RAPIDO"
    },
    countryAlerts : 
        "USA" : fast    // ** magic here
        "Japan" : fast  // **
    }
};

简而言之,你不能在这样的声明中做到这一点。您最好的选择是将其移至多个陈述中。

var parent = {
    fast : {
        en : "FAST",
        es : "RAPIDO"
    }
};
parent.countryAlerts = {
    "USA" : parent.fast,
    "Japan" : parent.fast
};

答案 1 :(得分:1)

您的后续行动:

var parent = new (function()
{
    var fast = {
      en: "FAST",
      es: "RAPIDO"
    };

    this.countryAlerts = {
        "USA" : fast,
        "Japan" : fast
    };
})();