假设我有以下JavaScript:
var obj = {
key1 : "it ",
key2 : key1 + " works!"
};
alert(obj.key2);
此错误带有“key1 is not defined”。我试过了
this.key1
this[key1]
obj.key1
obj[key1]
this["key1"]
obj["key1"]
它们似乎从未被定义过。
如何让key2引用key1的值?
假设我有以下JavaScript:
var obj = {
key1 : "it ",
key2 : key1 + " works!"
};
alert(obj.key2);
此错误带有“key1 is not defined”。我试过了
this.key1
this[key1]
obj.key1
obj[key1]
this["key1"]
obj["key1"]
它们似乎从未被定义过。
如何让key2引用key1的值?
当前回答
你也可以在函数内部引用obj,而不是这样。
var obj = {
key1: "it",
key2: function(){return obj.key1 + " works!"}
};
alert(obj.key2());
其他回答
因为定义obj的语句还没有结束,所以key1还不存在。考虑这个解决方案:
var obj = { key1: "it" };
obj.key2 = obj.key1 + ' ' + 'works!';
// obj.key2 is now 'it works!'
也许您可以考虑删除函数的属性。我的意思是这样的:
Var obj = { Key1: "it ", Key2:函数(){ 返回。Key1 +“works!”; } }; 警报(obj.key2 ());
这可以通过使用构造函数而不是文字来实现
var o = new function() {
this.foo = "it";
this.bar = this.foo + " works"
}
alert(o.bar)
这不是JSON对象,而是通过对象文字表示法创建的Javascript对象。JSON是一种用于数据交换的文本符号。如果你在处理JavaScript源代码,而不是处理字符串,你就不是在处理JSON。)
在对象初始化式中没有办法引用正在初始化的对象的另一个键,因为在初始化式完成之前没有办法获得对正在创建的对象的引用。(在这种情况下,没有类似的关键字。)
在初始化对象之前,不能引用该对象的属性;使用外部变量。
var key1 = "it";
var obj = {
key1 : key1,
key2 : key1 + " works!"
};
此外,这不是一个“JSON对象”;它是一个Javascript对象。JSON是一种用字符串表示对象的方法(它恰好是有效的Javascript代码)。