1

クローンを作成してから関数をオーバーライドするモジュールオブジェクトがあります。

var Module1 = (function () {
 var hello = "hi there!";
  return {
   sayHello : function () {
     console.log(hello);
   }
  }
})();

 var Module2 = (function (old) {
  var my = {}, key;
   for (key in old) {
    if (old.hasOwnProperty(key)) {
      my[key] = old[key];
    }
  }

  my.sayHello = function () {
    console.log(old.hello + " again");
  }

  return my;
}(Module1));

サブモジュールから「プライベート」変数「hello」にアクセスする方法はありますか?Module2.sayHello()(上記のコードで)呼び出すと、が出力されundefined again!ます。

4

1 に答える 1

2

いいえ、できません。

あなたは付け加えられます

getHello : function () {
    return hello;
}

Module1のreturnブロックに入れます。この場合、Module1のprivatevairablehelloを返すpublic関数を公開します。

于 2012-08-17T18:51:57.567 に答える