Комментарии 16
в первом примере вы скорее всего зыбыли new, или вставили лишние скобки в конце.
во втором я не догоняю, откуда вы возьмёте sportKind, если:
во втором я не догоняю, откуда вы возьмёте sportKind, если:
var periodInfo = (function(sportKind) {
var self = this;
this.sportKind = sportKind || 'football';
…
})(/* а вот тут-то что? */);
Первый пример — это достаточно стандартная конструкция.
Во втором, можно изменить значение параметра, не влезая внутрь кода и не создавая глобальной константы.
Во втором, можно изменить значение параметра, не влезая внутрь кода и не создавая глобальной константы.
вы знаете, но написав
var sportKind = somevalue;
this.sportKind = sportKind;
я тоже не создам глобальной константы, и поменять его надо будет тоже только в одном месте.
Зато мы сразу видим, что именно sportKind равен somevalue, и нам для этого не надо скроллить вверх к декларации функции.
var sportKind = somevalue;
this.sportKind = sportKind;
я тоже не создам глобальной константы, и поменять его надо будет тоже только в одном месте.
Зато мы сразу видим, что именно sportKind равен somevalue, и нам для этого не надо скроллить вверх к декларации функции.
Первый пример это стандартная конструкция для анонимных функций, а тут у нас объявление объекта со всеми потрохами.
Угадайте, что окажется в someComponent?
Угадайте, что окажется в someComponent?
var someComponent = (function() {
return this;
})();
почему то многие программисты или не хотят или забывают объединять данные и методы.потому что не у всех ООП головного мозга
Обычный и очень известный шаблон замыканий. Если надо передать параметры часто делаю так:
(function() {
// приват методы
return {
// паблик методы
init: function(initObj) {
}
};
})();
(function() {
// приват методы
return {
// паблик методы
init: function(initObj) {
}
};
})();
объясните пожалуйста что именно делает строчка
this.sportKind = sportKind || 'football';
Может, для вас это и не будет откровением, но первый код можно (да и нужно) записать так, что более красивее, логичнее и производительнее:
var someComponent = {
prop1 : 'foo',
prop2 : 'bar',
prop3 : 'qaz',
method1 : function() {
// Method Code Here
},
method2 : function() {
// Method Code Here
},
method3 : function() {
// Method Code Here
}
};
ну и не совсем согласен с подходом, предложенным в periodInfo. мы или пишем какой-то «класс» с публичным интерфейсом, с которым работам извне если таких объектов может быть много либо, раз не хотите захламлять глобальное пространство, а все действия не выходят за пределы одного замыкания — делать все в локальной областе видимости через var, а не this.
И еще я не обнаружил определение метода self.hide_hint_box(); Вы хотите преположить, что этот метод будет объявлен где-то извне даного кода?
И еще я не обнаружил определение метода self.hide_hint_box(); Вы хотите преположить, что этот метод будет объявлен где-то извне даного кода?
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Javascript. Отделяем мух от котлет