JavaScript范围:从子成员的闭包引用父对象成员

Dot*_*ate 5 javascript scope

这里有新手JavaScript.

如果在闭包中,我如何foo从成员中引用成员?foobarfoobar

var priv = {

    foo: "bar",

    foobar: (function() {
        return this.foo === "bar";
    })()

};
Run Code Online (Sandbox Code Playgroud)

上面的代码失败了.在它,this.fooundefined.如果我改变this.foopriv.foo,它仍然是undefined.如何priv.foofoobar封闭内引用?

mez*_*eze 2

在初始化期间不可能读取其定义中的对象的任何属性,因为prev那时将是未定义的。当您尝试在其中调用 clojure 时,它​​会引用 undefinedthispriv.

也许你想写:

foobar: (function() {
    return this.foo === "bar";
})
Run Code Online (Sandbox Code Playgroud)

()到最后没有。然后你可以将其称为priv.foobar();

如果您仍然需要调用它,您可以foobar在之后定义foo

var priv = {
    foo: "bar"
};

priv.foobar = (function() {
    return priv.foo === "bar";
})()
Run Code Online (Sandbox Code Playgroud)