【问题标题】:reference variable in object literal? [duplicate]对象文字中的引用变量? [复制]
【发布时间】:2011-06-19 00:55:56
【问题描述】:

说我有

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

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

如果我愿意的话

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

显然这不起作用。

正确的语法是什么?

【问题讨论】:

    标签: javascript object-literal


    【解决方案1】:

    你可以让 var3 成为一个函数,调用它可以让你使用 'this':

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

    【讨论】:

    • 我想的正是 OP 想要的。
    • 问题是x.v1和x.v3()的语法不同。
    • 如果你想要相同的语法,你也可以将 v1 和 v2 更改为函数
    【解决方案2】:

    你不能在你使用的符号中做到这一点。在这种情况下,对象字面量本身没有任何概念。

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2011-04-02
        • 1970-01-01
        • 2013-11-26
        • 2015-09-03
        • 2012-06-18
        • 2018-04-13
        • 1970-01-01
        相关资源
        最近更新 更多