JavaScript: обход / перемещение по пространству имен из пространства имен? - PullRequest
2 голосов
/ 06 марта 2011

Я новичок в пространствах имен javascript, и я оказался довольно глубоко в пространстве имен, но не смог найти способ навигации из пространства имен к другому объекту в том же общем пространстве имен.Лучше всего описать его следующим кодом:

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

Есть ли способ сделать это?

Ответы [ 3 ]

1 голос
/ 06 марта 2011

Это будет работать:

$.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
  }
};
1 голос
/ 06 марта 2011

Поскольку пространства имен - это просто свойства объектов, нет способа узнать, к какому объекту принадлежит свойство, из свойства. Простая причина в том, что идентичные свойства могут появляться в нескольких объектах.

Пространства имен должны быть стабильными и постоянными, поэтому нет ничего плохого в том, чтобы ссылаться на все это. Однако, если вам нужно обращаться к одним и тем же именам много раз, вы можете сделать это немного проще для себя, назначив его переменной.

var my_ns = $.fileUploading;
0 голосов
/ 06 марта 2011
(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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...