Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Импорт глобальных в модуль (https://javascript.ru/forum/misc/44812-import-globalnykh-v-modul.html)

Ateiri 03.02.2014 10:26

Импорт глобальных в модуль
 
Здравствуйте! В данный момент читаю стефанова про паттерны и что-то не совсем понимаю следующей конструкции.

MYAPP.utilities.module = (function (app, global) {
// references to the global object
// and to the global app namespace object
// are now localized
}(MYAPP, this));


Импорт происходит через входящие параметры функции, но если первый параметр это ссылка на объект MYAPP, то что this во втором параметре?

this ссылка на utilities или может module? или вообще объект в котором находится наше приложение MYAPP?

Объясните пожалуйста, что то я совсем запутался))
Заранее благодарю.

Ateiri 03.02.2014 10:28

По-идее this это ссылка на объект в контексте которого была вызвана функция module. Т.е. получается utilities?

kostyanet 03.02.2014 10:34

Что такое паттерны?

Ateiri 03.02.2014 10:42

шаблон если коротко. В целом здесь все описано http://ru.wikipedia.org/wiki/%D0%9F%...B5%D1%80%D0%BD

Ateiri 03.02.2014 10:53

http://shichuan.github.io/javascript-patterns/ Вы здесь уже давно, разве не знали?

Суть вопроса все же заключалась в вопросе с this, не подскажете?

kostyanet 03.02.2014 11:09

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

Суть вопроса я все равно не понял. Вы кажется выкосили действующее вещество из той функции, или каково ее действие?

kostyanet 03.02.2014 11:11

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

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

kostyanet 03.02.2014 11:21

http://en.wikipedia.org/wiki/Software_design_pattern

в русской секции кривой перевод

Ateiri 03.02.2014 11:22

Цитата:

Сообщение от kostyanet (Сообщение 295525)
Я только хотел сказать что чей-то ублюдочный код вовсе не является скрижалью и если вы изучаете предмет то берите много примеров, а не ровно 1.

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

Одна из лучших книг. Sandbox pattern используется в YUI, модульные подходы часто встречаются в google, вы о чем? Это лишь шаблоны для удобного проектирования приложений... Паттерн сам по себе пример реализации, он не заставляет вас делать именно так.
Если вы здесь чтобы "покрасоваться", то идите в другие темы и проявляйте свое упрямство и гениальность там, а здесь был сформулирован простой вопрос, который вы в свою очередь даже не смогли уловить.

«По-идее this это ссылка на объект в контексте которого была вызвана функция module. Т.е. получается utilities?»

kostyanet 03.02.2014 11:38

Вы с конкретным приложением разбираетесь или с паттерными на основе конкретного приложения? Если 1 то надо смотреть контекст. Если 2 то берите еще несколько примеров.

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

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

В ту самую функцию загоняется несколько таких зависимостей. Гоните контекст.

Яростный Меч 03.02.2014 11:44

Цитата:

Сообщение от Ateiri
то что this во втором параметре?

если этот код исполняется не внутри функции, то this будет ссылкой на глобальный объект (который в браузере известен как window).

kostyanet 03.02.2014 11:48

Поэтому нужен контекст. Это только тетка с кликухой Кости может по осколку кости определить сколько ее владелец не заплатил по кредиту, а в реальной жизни все не так.

this вяжется с вызывателем, это и так известно.

Ateiri 03.02.2014 12:20

Вообщем второй параметр данной функции зависит от контекста в котором он вызван, в данном случае window.

var MYAPP = MYAPP || {};
MYAPP.utilities = {};

MYAPP.utilities.module = (function (app, global) {
	alert(global===window)
}(MYAPP, this));

Ateiri 03.02.2014 12:21

Цитата:

Сообщение от Яростный Меч (Сообщение 295530)
если этот код исполняется не внутри функции, то this будет ссылкой на глобальный объект (который в браузере известен как window).

Ну вот, человек ответил на все одним сообщением))

kostyanet 03.02.2014 15:29

Цитата:

Сообщение от Ateiri
от контекста в котором он вызван, в данном случае window.

Данного случая не было. Факт что глобальный this это window должен быть заведомо известен чтецу литературы по паттернам.

Я бы сказал что об этом узнают буквально с первых шагов в js когда ничтоже сумняще делают вот так onclick="myFunc()"

function myFunc() {

this.oops_this_is_not_element_but_window;

}


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