对象字面量中的引用变量?

发布于 2024-10-15 05:26:58 字数 244 浏览 4 评论 0原文

如果我

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

想要一个使用当前未命名对象的值,我该怎么做?

例如,如果我想要

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

显然这是行不通的。

正确的语法是什么?

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?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

同展鸳鸯锦 2024-10-22 05:26:58

您可以将 var3 设为一个函数,调用它将允许您使用“this”:

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

alert(x.v3());

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());
网名女生简单气质 2024-10-22 05:26:58

不幸的是,这是不可能的。在构造对象文字时,在评估整个文字之前,不存在对该对象的外部引用。在此阶段使用 this 的唯一方法是使用构造函数:

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

myfunc(new MyObject());

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());
旧伤慢歌 2024-10-22 05:26:58

你不能用你正在使用的符号来做到这一点。在此上下文中,对象字面量本身没有任何概念。

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

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文