如何在 JS 对象定义中引用字段
How to refer a field inside a JS object definition?
好吧,这个问题可能不是很好表述的,但我会尝试通过示例更清楚地说明它:
var test = {
x1 : 10,
x2 : 20,
x3 : x1 + 5,
x4 : x2 + 5,
}
我需要的是参考之前声明的"x1"或"x2"字段。但是,如果我像例子一样写,JS说,"x1没有定义"。
我的第二次尝试是:
var test = {
x1 : 10,
x2 : 20,
x3 : this.x1 + 5,
x4 : this.x2 + 5,
}
但是"x3"和"x4"变成了"NaN",因为"this.x1"和"this.x2"是"未定义的"。
我什至尝试过:
var test = {
x1 : 10,
x2 : 20,
x3 : test.x1,
x4 : test.x2,
}
但是得到"测试未定义"。那么,我该如何引用"x1"或"x2"呢?
附言我知道,我可以写这样的东西:
var test2 = new (function(){
this.x1 = 10;
this.x2 = 20;
this.x3 = this.x1 + 5;
this.x4 = this.x2 + 5;
})();
它可以正常工作,但我真的需要一个类似 JSON 的对象定义。
更新:我忘了这个对象的描述被称为"文字"。因此,我找不到有关此主题的现有问题。但是,现在我已经为他们阅读了类似的问题和答案,但没有找到解决我问题的答案。
事实上,我需要保持文字符号,因为我正在开发一种"配置文件格式",它必须具有声明性语法(当然,这种格式的解析器将根据此配置文件执行一些算法)。并且这个配置文件必须被不了解 JS 的人理解和编辑。对他们来说,它不是一个脚本或对象,而只是一个具有指定结构的JSON。所以我最后不能使用一些初始化函数。
即使是 getter 也会增加太多的复杂性。这听起来可能很有趣,但是是的,它太复杂了。它将添加关键字"get"和"return",以及圆括号和分号标点符号。当 JSON 语法只有两种类型的括号和两种类型的标点符号时:冒号和逗号。因此,getter 或函数的复杂性几乎翻了一番,即使它们只包含一个字符串。
现在我倾向于选项,只是添加"id"字段,并由它引用。但也许有人可以提供更好的解决方案。
附言 除了对此配置文件使用一些有效的JS之外,我别无选择,因为我的应用程序没有任何服务器端。只有本地JS和HTML文件,只有标准浏览器运行它们,所以没有文件访问。因为该配置文件将以JS文件的形式提供给应用程序。
也许你使用get
语法:
var test = {
x1: 10,
x2: 20,
get x3() { return this.x1 + 5; },
get x4() { return this.x2 + 5; }
}
document.write(test.x3);
你应该这样做:
var test = {
x1 : 10,
x2 : 20,
x3 : function() {
return this.x1 + 5;
},
x4 : function() {
return this.x2 + 5;
},
}
alert(test.x3())
实现此目的的另一种方法(更多 oop):
var test = function() {
var self = this;
self.x1 = 10;
self.x2 = 20;
self.x3 = self.x1*2;
self.x4 = self.x2*2;
}
var toto = new test();
alert(toto.x3);
- 如何使用javascript var引用Mongo DB集合's字段
- 如何在初始化过程中引用同一对象内的对象字段
- 如何通过向用户推送模式引用来更新用户对象's数组字段
- 引用javascript对象内的另一个字段
- 使用下划线 js map 函数时,Mongo 引用字段未实例化
- AngularJS动态添加输入字段并保持对每个字段的引用
- 如何仅通过单独的图标而不是引用的输入字段激活 YUI 日期选择器
- 在iFrame(不同域)表单隐藏字段中抓取父级引用
- 对数组输入字段的Javascript函数引用
- 引用Iframe中的字段输入
- 如何在没有null引用异常的情况下轻松获得Javascript中嵌套字段的值
- 引用一个html文件,并在另一个html文件中使用它们的字段
- 引用到另一个类的数组字段数组字段没有't刷新
- 在mongo架构上定义一个属性,引用另一个架构和额外的字段
- mongoose.js:我如何从引用的子数组中删除一个属性,同时使用填充和使用其中一个子数组字段作为过滤器
- GraphQL交叉引用抛出错误:字段类型必须是输出类型,但得到:[object object]
- 如何在另一个集合中插入具有字段引用文档的文档
- 在JavaScript中引用action字段
- Mongodb对同一字段的多个引用
- 添加带有引用字段的欧芹.js验证器