在类构造函数中定义一个 const (ES6)

新手上路,请多包涵

有什么方法可以在类的构造函数中定义 const 吗?

我试过这个:

 class Foo {
    constructor () {
        const bar = 42;
    }

    getBar = () => {
        return this.bar;
    }
}

var a = new Foo();
console.log ( a.getBar() );

返回未定义。

原文由 alexandernst 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 454
2 个回答

您使用静态只读属性来声明作用域为类的常量值。

 class Foo {
    static get BAR() {
        return 42;
    }
}

console.log(Foo.BAR); // print 42.
Foo.BAR = 43; // triggers an error

原文由 Reactgular 发布,翻译遵循 CC BY-SA 3.0 许可协议

简单地在构造函数中定义一个常量不会将其附加到实例,您必须使用 this 设置它。我猜你想要不变性,所以你可以使用 getters

 class Foo {
    constructor () {
        this._bar = 42;
    }

    get bar() {
        return this._bar;
    }
}

然后你可以像往常一样使用它:

 const foo = new Foo();
console.log(foo.bar) // 42
foo.bar = 15;
console.log(foo.bar) // still 42

这不会在尝试更改时引发错误 bar 。如果需要,您可以在 setter 中引发错误:

 class Foo {
    constructor () {
        this._bar = 42;
    }

    get bar() {
        return this._bar;
    }

    set bar(value) {
        throw new Error('bar is immutable.');
    }
}

原文由 silvenon 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题