我们可以在Javascript中使变量作为吸气剂工作吗?

时间:2019-01-28 11:31:21

标签: javascript

在Javascript中,我们可以编写:

var obj = {
  log: ['a', 'b', 'c'],

  get latest() {
    if (this.log.length == 0) {
      return undefined;
    }
    return this.log[this.log.length - 1];
  }
}

console.log(obj.latest); // Outputs "c"

  

发件人:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/get

现在,我必须打电话给obj[key]来使getter正常工作。现在:

let obj = {
    get root () {
        return 2
    }
}

console.log(obj) // Returns { root: [Getter] }, I would like it to return "2"

我们可以通过某种方式使obj返回2吗?

2 个答案:

答案 0 :(得分:3)

要调用该函数,您需要使用obj.root

对其进行调用

let obj = {
  get root() {
    return 2
  }
}

console.log(obj.root)

另一方面,您只需写obj = obj.root

let obj = {
  get root() {
    return 2
  }
}
obj = obj.root
console.log(obj)

答案 1 :(得分:1)

您可以使用IIFE(立即调用函数表达式)在功能定义后立即运行。

let obj = {
    root: (function() {
        return 2;
    })()
}

console.log(obj);

这将提供所需的输出。请注意,在这种情况下,IFFE不会增加太多的价值,因为与在对象上简单定义root: 2相同。