【发布时间】:2011-02-16 18:02:37
【问题描述】:
假设我有以下 JavaScript:
var obj = {
key1 : "it ",
key2 : key1 + " works!"
};
alert(obj.key2);
“key1 未定义”的错误。我试过了
this.key1
this[key1]
obj.key1
obj[key1]
this["key1"]
obj["key1"]
它们似乎从未被定义过。
如何让 key2 引用 key1 的值?
【问题讨论】:
-
非常旧的 Firefox 版本(我尝试了 Firefox 4,它给出了警告但接受了它)允许您使用 #N= 和 #N# 来引用同一表达式中的现有对象,但这不适用于原语;你只需要复制那些。
-
其实有一个俗气的解决方法,你可以把原语装箱,然后用尖变量引用装箱的值:
var obj = { key1: #1= (new String("it ")), key2: #1# + "works!" }; alert(obj.key2) -
key2 在定义对象时在对象内部定义。因此,在定义 key2 时还没有 key1。只有赋值后key1才存在。你引用的东西还不存在。
-
this(双关语)现在可以在 ES6 中使用,在对象字面量函数中可以使用“this”
标签: javascript object