调用对象中的函数而不访问对象属性

时间:2018-06-24 19:17:00

标签: javascript

在这里我感到困惑,我创建了一个名为obj的对象,obj有一个键first。 现在,当我在下面解释程序时,一个first键具有一个键second hello()并在控制台hello上提供输出。而不访问obj.first.second之类的对象属性。 我不明白发生了什么事

或者有什么方法可以防止在访问对象属性之前调用函数。

var obj ={
first:{
    second:hello("hello")
  }
}
 
 //obj.first.second

function hello(url){
   console.log(url)
 }

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:2)

似乎您正在寻找一个吸气剂,当您访问该属性时该吸气剂将被执行:

 var obj = {
  first: {
     get second() { hello("hello") }
   }
};

 function hello(url) {
   console.log(url);
 }
 // Now here hello gets called:
 obj.first.second

答案 1 :(得分:0)

您还可以使用getter与类一起定义对象。

这是一个例子

class Rectangle {
      constructor(height, width) {
        this.height = height;
        this.width = width;
      }
      // Getter
      get area() {
        return this.calcArea();
      }
      // Method
      calcArea() {
        return this.height * this.width;
      }
    }

    const square = new Rectangle(10, 10);

    console.log(square.area);