javascript - 无法设置属性...只有 Getter (javascript es6)

标签 javascript class constructor typeerror getter-setter

所以我有一个简单的 Javascript 类

class MyClass {
    constructor(x) {
        this.x = x === undefined ? 0 : x;
    }

    get x() {
        return this.x;
    }
}

创建 MyClass 时,我希望将其 x 设置为作为参数传入的值。在这之后,我不希望它能够被改变,所以我故意不做一个 set x() 方法。

但是,我想我一定错过了一些基本的东西,因为这给了我“无法设置属性......只有 setter/getter ”错误。

如何在不创建 setter 方法的情况下为 x 赋值?

最佳答案

这里有几个问题。

当您通过 get x() 制作 setter/getter 时你正在造成this.x导致调用 getter,由于您的 get x(),它将无限期地递归做this.x .

替换您对 this.x 的引用与 this._x在这样的代码中:

class MyClass {
    constructor(x) {
        this._x = x === undefined ? 0 : x;
    }

    get x() {
        return this._x;
    }
}

现在你封装的x现在是 _x通过 this.x 调用 getter 不会感到困惑.

关于javascript - 无法设置属性...只有 Getter (javascript es6),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54562790/

相关文章:

c++ - 是否可以在不声明其方法的情况下保留裸类定义?

c# - 是否可以创建构造函数扩展方法?如何?

javascript - JQueryUI 在一个 id 上调用 .accordion 两次

javascript - React 功能组件 vs 经典组件

javascript - 您为我们提供了节点类型 TSInstantiationExpression 的访问者,但它不是有效类型

css - 在一个规则中使用多个类的目标元素

c# - 构造通用对象(不是默认构造函数)

java - 您如何在对象类中实现枚举 - Java?

javascript - 当实际页面由 localhost 服务器提供时,如何使用 socket.io 与另一台服务器通信?

javascript - 为什么这里需要 $scope.$apply() 来进行简单的删除,推荐的方法是什么(因为使用它,它会引发错误)?