无法设置属性...仅具有吸气剂(javascript es6)

use*_*944 5 javascript constructor class typeerror getter-setter

所以我有一个简单的Javascript类

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

    get x() {
        return this.x;
    }
}
Run Code Online (Sandbox Code Playgroud)

创建MyClass时,我希望将x设置为作为参数传递的值。在此之后,我不希望能够对其进行更改,因此我故意没有设置set x()方法。

但是,我想我肯定缺少一些基本的东西,因为这给了我“无法设置属性...仅具有吸气剂”的错误。

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

Ele*_*hus 11

这里有几个问题。

当你通过你创建一个 getter 时,get x()你会导致this.x调用 getter,由于你的get x()行为,它会无限期地递归this.x

在此代码中替换您对this.xwith的引用,this._x如下所示:

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

    get x() {
        return this._x;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在您封装的xwhich is now_x不会与通过this.x.