【问题标题】:JavaScript: Traversing/navigating through a namespace from within a namespace?JavaScript:从命名空间内遍历/导航命名空间?
【发布时间】:2011-03-06 15:05:37
【问题描述】:

我是 javascript 命名空间的新手,我发现自己在命名空间中有点深,但无法找到从命名空间内导航到同一个通用命名空间中的另一个对象的方法。最好用下面的代码来描述:

$.fileUploading = {
  images: {
    settings: {
      // How do you do this?
      bing_bong: find.a.way.to.functionOne
    },
    functionOne: function() { return "Rock!"; }
  }
}

有没有办法做到这一点?

【问题讨论】:

    标签: javascript namespaces


    【解决方案1】:

    因为命名空间只是对象的属性,所以无法从属性中找出属性属于哪个对象。一个简单的原因是相同的属性可以出现在多个对象中。

    命名空间应该是稳定和不变的,所以引用整个事物并没有错。但是,如果您需要多次访问相同的名称,您可以通过将其分配给变量来使其更容易。

    var my_ns = $.fileUploading;
    

    【讨论】:

      【解决方案2】:

      这可行:

      $.fileUploading = {
        images: {
          settings: {},
          functionOne: function() { return "Rock!"; }
        }
      };
      
      $.fileUploading.images.settings.bing_bong = $.fileUploading.images.functionOne;
      

      这也是:

      function f() { return "Rock!"; }
      
      $.fileUploading = {
        images: {
          settings: {
            // How do you do this?
            bing_bong: f
          },
          functionOne: f
        }
      };
      

      【讨论】:

      • 这可以解决问题。 :) 我选择了另一个,因为它是我所问问题的答案。
      【解决方案3】:
      (function(){
      
      var yourNameSpace={
              publicProp1:publicFn1,
              publicProp2:publicFn2,
              publicProp3:publicFn3
          };
      
          window.yourNameSpace = yourNameSpace;
      
      
      //private variable
      var _privateVar1,_privateVar2,_privateVar3;
      
      //privatefns
      function _privateFn1(){}
      function _privateFn2(){}
      function _privateFn3(){}
      function _privateFn4(){}
      
      
      //public functions can access private fns 
      function publicFn1(){}
      function publicFn2(){}
      function publicFn3(){}
      
      
      }(undefined);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-02-26
        • 2010-12-05
        • 2011-12-02
        • 2011-03-25
        • 1970-01-01
        • 2015-01-08
        • 1970-01-01
        相关资源
        最近更新 更多