代码之家  ›  专栏  ›  技术社区  ›  Streching my competence

在javascript的object方法中添加数字

  •  0
  • Streching my competence  · 技术社区  · 7 年前

    假设我有以下对象:

    var my_object = {
        value1: "220",
        value2: "100",
        value3_1: "300",
        value3_2: "300",
        value3: function() {
            return +this.value3_1 + +value3_2;
        }
    };
    

    我需要做些什么才能让它工作?在控制台中, my_object.value3 退货:

    () {
            return +this.value3_1 + +this.value3_2;
        }
    

    ..而不是“600”。

    3 回复  |  直到 7 年前
        1
  •  0
  •   ishanbakshi    7 年前

    你可能想这样做:

    var my_object = {
     value1: "220",
     value2: "100",
     value3_1: 300,
     value3_2: 300,
     value3: function() {
        return +this.value3_1 + this.value3_2;
     }
    };
    

    然后用以下命令调用函数: my_object.value3()

    this 在value3的前面,我改变了value3的值

        2
  •  2
  •   niry    7 年前

    使用吸气剂

    var my_object = {
     value1: 220,
     value2: 100,
     value3_1: 300,
     value3_2: 300,
     get value3() {
        return this.value3_1 + this.value3_2;
     }
    };
    
    console.log(my_object.value3);

    例如,假设需要读取所有值,可以执行以下操作:

    Object.keys(my_object).forEach(k => console.log(k, my_object[k]))
    

    如果没有getter,您需要:

    Object.keys(my_object).forEach(k => console.log(k, 
        typeof my_object[k] === 'function' ? my_object[k]() : my_object[k]))
    
        3
  •  0
  •   Lakshmi    7 年前

    调用函数时,需要使用括号()。所以应该是这样 我的\u object.value3()

    值3\u 2 具有 此值3\u 2

    或者, 值3\u 1 值3\u 2 都是数字,所以不需要加引号。你只要写300就行了。

    var my_object = {
      value1: 220,
      value2: 100,
      value3_1: 300,
      value3_2: 300,
      value3: function() {
        return this.value3_1 + this.value3_2;
     }
    };