Пространства имен JavaScript - PullRequest
1 голос
/ 17 апреля 2011

Какой лучший способ получить доступ к функции или свойству из одного пространства имен в другом в JavaScript? Пример:


var NS = {};  
NS.A = {  
    prop1: 'hello',
    prop2: 'there',
    func: function() {alert('boo');}  
};  

NS.B.C = {  

    func1: function() {
        // Here I want to access the properties and function from the namespace above
        alert( NS.A.prop1 + NS.A.prop2 ); // ?
        NS.A.func(); // ?
    }

};

NS.B.C.func1();

Ответы [ 2 ]

4 голосов
/ 17 апреля 2011

Конечно, «пространство имен» в JavaScript - это просто глобальный объект, в котором хранится коллекция связанных функций и фрагментов данных (вместо множества глобалов, по одному для каждой функции и части данные).

Единственная причина, по которой ваш пример не сработает, это то, что NS.B не определен, когда вы пытаетесь присвоить ему свойство C.

2 голосов
/ 17 апреля 2011

NS.B.C вызывает ошибку ... что-то вроде этого должно работать для вас:

NS.B = {
  C: {
    func1: function() {
        // Here I want to access the properties and function from the namespace above
        alert( NS.A.prop1 + NS.A.prop2 ); // ?
        NS.A.func(); // ?
    }
  }
};

См., Например, http://jsbin.com/eweta5/2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...