динамические ключи для литералов объектов в Javascript [дубликат]

На этот вопрос уже есть ответ здесь:

Хорошо, я работаю над проектом в Nodes, и у меня возникла небольшая проблема с ключами в объектных литералах у меня есть следующая настройка:

var required = {
    directories : {
        this.applicationPath                    : "Application " + this.application + " does not exists",
        this.applicationPath + "/configs"       : "Application config folder does not exists",
        this.applicationPath + "/controllers"   : "Application controllers folder does not exists",
        this.applicationPath + "/public"        : "Application public folder does not exists",
        this.applicationPath + "/views"         : "Application views folder does not exists"
    },
    files : {
        this.applicationPath + "/init.js"               : "Application init.js file does not exists",
        this.applicationPath + "/controllers/index.js"  : "Application index.js controller file does not exists",
        this.applicationPath + "/configs/application.js": "Application configs/application.js file does not exists",
        this.applicationPath + "/configs/server.js"     : "Application configs/server.js file does not exists"
    }
}

Хорошо, многие из вас посмотрят на это и подумают, что это нормально, но компилятор продолжает говорить мне, что мне не хватает : (двоеточие ), а это не так, похоже на + или . оба влияют на компилятор.

Теперь я считаю (не уверен), что объектные литералы создаются во время компиляции, а не во время выполнения, что означает, что динамические переменные, такие как this.applicationPath и конкатенация, являются не будет доступен :(: (

Как лучше всего преодолеть подобное препятствие без необходимости переписывать большие куски кода.

80
задан Jonathan Leffler 9 July 2011 в 05:22
поделиться