JavaScript:从命名空间中遍历/导航命名空间?

时间:2011-03-06 15:05:37

标签: javascript namespaces

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

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

有办法吗?

3 个答案:

答案 0 :(得分:1)

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

命名空间应该是稳定且恒定的,因此引用整个事物没有任何问题。但是,如果您需要多次访问相同的名称,可以通过将其分配给变量来使自己更容易一些。

var my_ns = $.fileUploading;

答案 1 :(得分:1)

这样可行:

$.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
  }
};

答案 2 :(得分:0)

(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);