"得到"不工作

Mi*_*ght 3 javascript getter get

function User() {
    this.firstname = null;

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

JavaScript控制台在第12行给出了一个错误"错误标识符"

var Jake = new User();
Jake.firstname = "Jake";
document.write(Jake.getFirst);
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 9

这不是您用来定义getter的语法.你可以在对象文字中使用它,如下所示:

var foo = {
    get bar() {
        return 42;
    }
};

foo.bar; // 42
Run Code Online (Sandbox Code Playgroud)

......但那不是你的地方get.

要定义它的位置get,您可以使用defineProperty:

function User() {
    this.firstname = null;

    Object.defineProperty(this, "first", {
        get: function() {
            return this.firstname;
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

注意我调用它first,不是getFirst,因为它是一个访问器函数,看起来像直接属性访问,因此传统上没有给出动词形式的名称:

var u = new User();
u.firstname = "Paul";
u.first; // "Paul"
Run Code Online (Sandbox Code Playgroud)

如果你想创建一个名为的函数getFirst,只需删除get关键字:

this.getFirst = function() {
    return firstname;
};
// ...
var u = new User();
u.firstname = "Paul";
u.getFirst(); // "Paul"
Run Code Online (Sandbox Code Playgroud)

  • 在`Object.defineProperty(`...`)`中,你可以写`get`而不是`value`,它会按预期工作.但是,仍然会使用此代码返回"null",因为`firstname`实际上并未设置为"Paul". (2认同)