首页 > 解决方案 > Nodejs:从实例变量中引用构造函数变量

问题描述

我在 Javascript(节点)中有一点 OOP 问题。

我创建了一个名为 Bubble 的类。这个类有一个接受令牌的构造函数。现在,问题来了:

class Bubble {
    
    constructor(token) {
        if (!token) throw new Error('No token');
        this.token = token;
    }

    first = new First(this.token)
    second = new Second(this.token)
    third = new Third(this.token)

如果我执行,则传递new Bubble("someToken").first一个空令牌。但是,如果我将firstsecondthird更改为 functions 并且我 perform new Bubble("someToken").first(),则确切的令牌将成功传递。我想引用firstsecondthird作为直接变量,而不是函数,即new Bubble("someToken").first.

我该怎么做?

标签: javascriptnode.jsoop

解决方案


一种选择是将您的类方法实现为getters。这是您的示例中的样子:

class Bubble {
    
    constructor(token) {
        if (!token) throw new Error('No token');
        this.token = token;
    }
    
    get first() {
      return new First(this.token);
    }
    
    get second() {
      return new Second(this.token);
    }

    get third() {
      return new Third(this.token);
    }   
}

有了这些 getter,访问它们看起来就像调用者的常规属性访问。

const bubble = new Bubble("token");
bubble.first
bubble.second
bubble.third

推荐阅读