在不创建类的情况下计算对象中的值

时间:2014-01-04 13:40:42

标签: javascript

我在对象中有一些原始数据。其中一个属性需要使用其他属性的参数进行计算。

这显然不起作用:

var myObj = {
  val1: 3,
  val2: 5,
  sum: this.val1 + this.val2 //NaN
}

我知道我可以创建一个类然后创建一个实例。在这里完成了:http://jsbin.com/AtaQOPUM/1/edit?js,console,output

但是,有没有办法让我不必这样做?我的对象是大约150行。我必须在构造函数中插入所有内容,然后复制该对象。它将是300行而不是150行。

有什么想法吗?

4 个答案:

答案 0 :(得分:1)

在JavaScript中,您无法访问自身内部的对象。如果您不想实例化它,则需要稍后直接添加该属性:

var myObj = {
    val1: 3,
    val2: 5,
}

myObj.sum = myObj.val1 + myObj.val2 // = 8

jsFiddle Demo

答案 1 :(得分:0)

我只需要创建一个附加所需参数的函数:

 var Append = function(obj) { obj.sum = obj.a + obj.b; return obj }
 var myObj = Append({ a:1, b: 2});

答案 2 :(得分:0)

作为对象的功能可能更适合您的需求:

  function myObj() {

       this.val1 = 3;
       this.val2 = 5;
       this.sum = this.val1+this.val2;

    }

   var newsum = new myObj();

   console.log(newsum.sum);

答案 3 :(得分:-1)

问题在于

中的this
var myObj = {
  val1: 3,
  val2: 5,
  sum: this.val1 + this.val2 //NaN
}

不是对象本身,而是窗口(使用控制台检查)

您必须在对象创建之外执行初始化:

var myObj = {
  val1: 3,
  val2: 5
};

myObj.sum = myObj.val1 + myObj.val2;

修改 忽略下面的内容,我在测试期间不小心在控制台中设置了对象。 而是使用对象名称本身:     var myObj = {       val1:3,       val2:5,       sum:myObj [“val1”] + myObj [“val2”] // 8     }