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 的返回块,在这种情况下,您公开一个公共函数,该函数返回 Module1 的私有变量 hello。

于 2012-08-17T18:51:57.567 回答