【发布时间】:2011-06-19 00:55:56
【问题描述】:
说我有
myfunc({
var1: 1,
var2: 2,
})
如果我想要一个使用当前未命名对象的值,我该怎么做?
如果我愿意的话
myfunc({
var1: 1,
var2: 2,
var3: this.var1 + this.var2
})
显然这不起作用。
正确的语法是什么?
【问题讨论】:
说我有
myfunc({
var1: 1,
var2: 2,
})
如果我想要一个使用当前未命名对象的值,我该怎么做?
如果我愿意的话
myfunc({
var1: 1,
var2: 2,
var3: this.var1 + this.var2
})
显然这不起作用。
正确的语法是什么?
【问题讨论】:
你可以让 var3 成为一个函数,调用它可以让你使用 'this':
x= {
v1:4,
v2:5,
v3:function(){return this.v1 + this.v2;}
};
alert(x.v3());
【讨论】:
你不能在你使用的符号中做到这一点。在这种情况下,对象字面量本身没有任何概念。
【讨论】:
很遗憾,这是不可能的。在构造对象文字时,在评估整个文字之前,不存在对该对象的外部引用。在这个阶段使用this 的唯一方法是使用构造函数:
function MyObject() {
this.var1 = 1;
this.var2 = 2;
this.var3 = this.var1 + this.var2;
}
myfunc(new MyObject());
【讨论】: