运行以下页面时出现以下错误:

“ this.testpublic不是函数”


test = function() {
        var testprivate = function() {
                this.testpublic();
        }

        this.testpublic = function() {
                console.log('test');
        }

        testprivate();
}
new test();



显然,当调用testprivate时,“ this”开始指向“窗口”而不是对象。

当在同一对象中时,JavaScript是否不应该保留“此”上下文?

最佳答案

调用testprivate时,您需要操纵上下文。您可以使用function.call覆盖功能范围。尝试这个:

test = function() {
        var testprivate = function() {
                this.testpublic();
        }

        this.testpublic = function() {
                console.log('test');
        }

        testprivate.call(this);
}
new test();

10-06 05:16
查看更多