开发者

reference variable in object literal? [duplicate]

This question already has answers here: Self-references in object literals / initializers (30 answers) Closed 8 years ago.

say I 开发者_开发百科have

myfunc({
  var1: 1,
  var2: 2,
})

if i want to have a value that makes use of the current unnamed object, how would I do this?

eg if I wanted

myfunc({
  var1: 1,
  var2: 2,
  var3: this.var1 + this.var2
})

obviously this does not work.

What would the correct syntax be?


You could make var3 a function, and calling it will allow you to use 'this':

x= {
    v1:4,
    v2:5,
    v3:function(){return this.v1 + this.v2;}
};

alert(x.v3());


Unfortunately, that isn't possible. While an object literal is being constructed, no external reference to that object exists until the entire literal is evaluated. The only way to use this at this stage is to use a constructor instead:

function MyObject() {
  this.var1 = 1;
  this.var2 = 2;
  this.var3 = this.var1 + this.var2;
}

myfunc(new MyObject());


You can't do it in the notation you're using. An object literal doesn't have any notion of itself in this context.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜