Javascript 私有函数不返回值

Javascript 私有函数不返回值,javascript,Javascript,我有如下代码 var Main = function () { var a, b, c, d; a = 1; b = true; c = undefined; var _private = function () { return 'Function with Private acceess'; }; this.getPublic = function () { return 'Function with

我有如下代码

var Main = function () {
    var a, b, c, d;
    a = 1;
    b = true;
    c = undefined;

    var _private = function () {
        return 'Function with Private acceess';
    };

    this.getPublic = function () {
        return 'Function with Public access';
    };

    this.getPrivate = function () {
        _private();
    };

};

var o = new Main();
console.log(o.getPublic());
console.log(o.getPrivate());
在上面的代码中,我试图通过公共方法
getPrivate()
访问
Main
对象
o
的私有方法。 但在控制台中,结果是

undefined

为什么
\u private
没有返回所需的值?

您忘记了
return
语句。请尝试以下操作:

this.getPrivate = function () {
    return _private();
};
如果Javascript函数没有显式返回值,则该函数被视为返回未定义的
;不会发出警告。

您忘记“返回”值

this.getPrivate = function () {
    return _private();
};

像这样更改
返回_private()

哎呀……你忘了返回值……试试这个

var Main = function () {
    var a, b, c, d;
    a = 1;
    b = true;
    c = undefined;

    var _private = function () {
        return 'Function with Private acceess';
    };

    this.getPublic = function () {
        return 'Function with Public access';
    };

    this.getPrivate = function () {
        return _private();
    };

};

var o = new Main();
console.log(o.getPublic());
console.log(o.getPrivate());

\u private()
尽力返回一个值,但是
getPrivate()
不会将它转发给它自己的调用者。这不属于打字问题吗?@Esailija,不确定。尽管如此,仍然在思考。“Esailija,的确如此,但要考虑的正确角度是,这个问题是否能给更多的读者带来好处。”忘记调用链中的
return
语句在其他语言中不是什么大问题(至少会导致警告),但在Javascript中则不是这样。有一个快速的、切中要害的、经过投票表决的答案。保持这个问题的开放性看起来是更好的选择。你也许应该看看构造函数通常是如何应用的。目前看起来您根本没有使用prototype,还可以使用返回对象文本的函数(如果您想使用私有值属性)或正确实现构造函数函数: