获取对象属性值

时间:2016-01-10 22:10:00

标签: javascript

这无济于事。如何获得物业总和obj

var obj = {
  a: {
    value: 1
  },

  b: {
    value: 2
  },

  sum: {
    value: obj.a.value + obj.b.value
  }
};

console.log(obj.sum);

4 个答案:

答案 0 :(得分:4)

sum本身就是一个JavaScript函数。所以这是有效的:

var obj = {
    a: {
        value: 1
    },

    b: {
        value: 2
    },

    get sumValue(){
        return this.a.value + this.b.value
    }
};

您可以详细了解对象方法here

答案 1 :(得分:3)

你需要在内联getter中使用这样的文字来编写自反射表达式:

var obj = {
  a: {
    value: 1
  },

  b: {
    value: 2
  },

  get sum(){
    return this.a.value + this.b.value
  }
};

console.log(obj.sum); // shows: 3

这是ES5,但经常过度看。它适用于所有主流浏览器(甚至是IE8)和节点。

getter语法很好,因为obj.sum就像一个数字一样,并在ab更改时自动更新。

当然,使用方法(一个函数)可能更传统,并将其称为obj.sum(),因为它向其他编码员表明它是"计算属性& #34;或多或少...

答案 2 :(得分:1)

在对象初始值设定项中,尚未将对象分配给变量obj。然后,obj未定义,因此您无法使用obj.a.value

但是你可以通过实例化一个匿名函数来实现类似的东西:

var obj = new function() {
  this.a = {
    value: 1
  };
  this.b = {
    value: 2
  };
  this.sum = {
    value: this.a.value + this.b.value
  };
};

答案 3 :(得分:0)

看起来你试图在你的对象中添加一个方法,如果是这样的话,它应该是这样的:

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

console.log(obj.sum); //Returns the function object
console.log(obj.sum()); //Returns the value 3