継承可能で、いくつかのパブリック プロパティを持つカプセル化されたオブジェクトを作成しようとしています。ここにいくつかのコードがあります:
var MyObject = (function()
{
    function myObject()
    {
        //Public variables
        this.publicVar1 = 'hello';
        this.publicVar2 = 'world';
    }
    function foo()
    {
        console.log(this.publicVar1 + ' ' + this.publicVar2);
    }
    function bar()
    {
        foo();
    }
    //Public API
    myObject.prototype = {
        constructor: myObject,
        foo: foo,
        bar: bar
    }
    return myObject;
})();
var mo = new MyObject();
mo.foo(); //hello world
mo.bar(); //undefined undefined
私の質問はなぜ mo.bar() が 'undefined undefined' をログに記録するのですか? また、この問題を修正するにはどうすればよいですか?
publicVar1 と publicVar2 を MyObject モジュールの内部のスコープに保持しようとしていますが、myObject プロトタイプを拡張する他のオブジェクトによってパブリックにアクセス可能で継承されるようにもしています。
ありがとう。