3

我有如下代码。

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());

在上面的代码中,我试图通过 public 方法访问Main对象的私有方法。但在控制台中,结果是ogetPrivate()

undefined

为什么_private没有返回所需的值?

4

4 回答 4

7

你忘了return声明。尝试以下操作:

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

如果 Javascript 函数没有显式返回值,则认为该函数返回undefined;不会发出警告。

于 2013-08-16T12:12:53.117 回答
2

您忘记“返回”该值。

this.getPrivate = function () {
    return _private();
};
于 2013-08-16T12:13:16.563 回答
2

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

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());
于 2013-08-16T12:15:21.603 回答
0

像这样改变return _private()

于 2013-08-16T12:14:48.723 回答