好的,所以我正在研究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"
}
}
好的,你们中的很多人都会看这个,并认为它没问题,但是编译器不断告诉我,我缺少一个:
(冒号),但不是,好像+
or或the .
都在影响编译器。
现在我相信(不确定),对象文字是在编译时创建的,而不是在运行时创建的,这意味着动态变量(例如this.applicationPath
和级联)将不可用
克服此类障碍而不必重写大量代码的最佳方法是什么。
您可以使用括号表示法设置动态键:
required.directories[this.applicationPath + "/configs"] = "Application config folder does not exists";
(当然,无论您在何处进行此定义,都this.applicationPath
必须存在)
但是您需要this.applicationPath
按键吗?您如何访问这些值?也许您可以this.applicationPath
从用于访问属性的任何值中删除。
但是如果您需要它:
如果要避免重复很多代码,可以使用数组来初始化键:
var dirs = ['configs', 'controllers', ...];
var files = ['init.js', 'controllers/index.js', ...];
var required = { directories: {}, files: {} };
required.directories[this.applicationPath] = "Application " + this.application + " does not exists";
for(var i = dirs.length; i--;) {
required.directories[this.applicationPath + '/' + dirs[i]] = "Application " + dirs[i] + " folder does not exists";
}
for(var i = files.length; i--;) {
// same here
}
这个表情怎么了? 我得到这个错误:
问题内容: 首先,我使用Cheerio进行一些DOM访问并使用Node.js进行解析。美好的时光。 情况如下: 我具有创建对象所需的功能。该对象为其键和值使用变量,然后返回该单个对象。例: 它输出: (返回对象fyi的数组) 我实际上需要成为的字符串。 考虑到我要做什么,在Java中将字符串分配为键的最佳方法是什么? 问题答案: 在JavaScript 的新ES2015标准(以前称为ES6)中,可
问题内容: 我正在使用这段代码(如下所示)来尝试填充在for循环内命名的对象文字。我需要将这些对与循环迭代变量一起分配,例如:。但是,我的代码无法正常工作。的没有被反映在字面。 很明显,我在这里缺少某些东西。有人可以告诉我这是什么吗?…谢谢。 问题答案: 编辑:使用 因为ECMAScript 将此中的视为文字。
问题内容: 用语言很难解释这种情况,让我举一个例子: 如何在JavaScript对象中设置具有变量值的变量属性? 问题答案: 那应该工作。您混合了变量的名称及其值。但是用字符串索引对象以获取其属性可以在JavaScript中很好地工作。
可能重复: 对象文字声明中的自引用 有没有办法在同一对象文本中访问属性名的值?类似这样的事情:
我有一个静态结构的对象: 我想按键更新它的属性。例如,如果我收到 然后我想更新对象,并有: 我该怎么办?我试图创建一个新对象,类似这样: 我不知道如何从变量中设置键和值的名称