Javascript-форум (https://javascript.ru/forum/)
-   Javascript под браузер (https://javascript.ru/forum/css-html/)
-   -   Пространство имен (https://javascript.ru/forum/css-html/19069-prostranstvo-imen.html)

_SONY_ 25.07.2011 13:36

Пространство имен
 
Столкнулся с проблемой при изучении JavaScript. Проблема состоит в том, что я совершенно не понимаю тему пространства имен. В книге вроде-бы и написано как создавать, то да сё. Но реальных примеров там нет и как это пространство имен встраивается в страницу не понятно вообще. Прошу помочь вас какой-нибудь ссылкой на материал из этой темы с детальными примерами. Спасибо.

Kolyaj 25.07.2011 13:40

В JavaScript нет пространств имён.

melky 25.07.2011 13:44

это костыли для удобства

Пример: customMethod находится в пространстве имён myNameSp.
var myNameSp = {};

myNameSp.customMethod = function(){};

_SONY_ 25.07.2011 13:45

Наверное я не внятно выразился. Скорее не создание пространства имен, а создание специальных модулей.

Kolyaj 25.07.2011 13:46

А специальными модулями вы что называете?

melky 25.07.2011 13:50

О_О

да Господи Иисусе

не люблю так писать.

что вы имеете в виду под "модулями" ? я тоже не понял.

Супер магию ?
var myNameSp = {
          import : function (name, method ) { myNameSp[ name ] = method; }
};

function myMethod() {...};

myNameSp.import ( "myMethod", myMethod );

....
myNameSp.myMethod();

_SONY_ 25.07.2011 13:50

Ну вот например: модуль Class.js
var Class = {};
Class.define = function(date) {};

melky 25.07.2011 13:56

сверху пример кода

если разделить его так :

первый файл - ядро

var myNameSp = {
          import : function (name, method ) { myNameSp[ name ] = method; }
};


второй файл - дополнения. "модули"

function myMethod() {...};

myNameSp.import ( "myMethod", myMethod );


третий файл - использование

myNameSp.myMethod();


... не это ли вы имели в виду?

_SONY_ 25.07.2011 13:58

Сам толком понять не могу. К примеру: Модуль вспомогательных функций для работы с классами

melky 25.07.2011 16:39

не забивай себе голову :)

я замыкание три дня не понимал.

prototype 25.07.2011 22:23

var NameSpaceName = function() {
   return {
      YourMethod1 : function() {
         // 
      },
      YourMethod2: function() {
         //
      },
      YourMethod2: function() {
         //
      }

      // 
      var xyz;
      function alertUser()
      {
         alert('ололо');
      }
   };
}();

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

var jQuery = (function() {
//хрень
})();


Книги Дэвида Флэнагана говнецо, 2-х слов связать не может алкаш.
Читай лучше javascript шаблоны

Shaci 25.07.2011 23:03

Цитата:

Сообщение от prototype (Сообщение 115398)
Книги Дэвида Флэнагана говнецо, 2-х слов связать не может алкаш.
Читай лучше javascript шаблоны

читай обазательно книги Фленагана, мой тебе совет

melky 25.07.2011 23:06

ета назаваеца колоша, чтоб ты знал, prototype

по-русски
(ты намешал понятия. вместо объекта-торта с плюшками ты пишешь замыкание с пространством имён)

kobezzza 28.07.2011 04:24

Цитата:

Книги Дэвида Флэнагана говнецо, 2-х слов связать не может алкаш.
Читай лучше javascript шаблоны
Как жить дальше. Дети стали совсем неадекватные:) Хотя наверно prototype - это всё таки исключение. Да я буду в это верить)

tenshi 28.07.2011 12:26

Цитата:

Сообщение от Kolyaj (Сообщение 115262)
В JavaScript нет пространств имён.

// объявили пространство имён
MyNameSpace = {}

// поместили в него наш класс
MyNameSpace.MyClass

// импортировали и используем
with( MyNameSpace ){
alert( new MyClass )
}

Kolyaj 28.07.2011 13:21

tenshi,
объект не становится пространством имён от того, что ты назвал его пространством имён.

kobezzza 28.07.2011 13:36

С with ещё можно напороться на забавные баги) Например:
var a = {b: 1}
with (a) {
b = 2;
c = 3;
}
console.log(a.b); // всё ок
console.log(a.с); // undefined ?! Оо

розовый слоник 02.08.2011 17:22

Цитата:

Книги Дэвида Флэнагана говнецо, 2-х слов связать не может алкаш.
Читай лучше javascript шаблоны
жесть

tenshi
with не желательно использовать

ну и все остальным начинающим в js нету классов. забудте за них когда вы кодите на js. Это очень специфичный язык


Часовой пояс GMT +3, время: 23:55.