我已经创建了一个Javascript名称空间,如下所示:

var MyApp = function() {
      return {
        someFunction : function(x) {}
             alert(MyApp.y);
      }
}();


这使我可以这样做:

MyApp.someFunction(x);


我希望能够执行以下操作:

MyApp.y = "test",以便我的someFunction可以访问此变量Y。

关于如何解决这个问题的任何想法?我想保持我的NS语法完整,因此可以与示例代码一起使用的解决方案很好。

最佳答案

您所描述的应该有效。 (除非您遇到语法错误和未使用的参数x。)

var MyApp = function() {
  return {
    someFunction : function(x) {
         alert(MyApp.y);
    }
  }
}();
MyApp.y = 'test';
MyApp.someFunction() // alerts 'test'


另一种方法是将外部函数更像构造函数,并将y作为闭包传递:

var MyApp = (function (y) {
    return {
        y: y,
        someFunction: function () {
            alert(MyApp.y); // or alert(this.y)
        }
    }
} ('test'));
MyApp.someFunction(); // alerts 'test'

关于javascript - 如何将变量传递给Javascript命名空间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8521013/

10-13 07:05