В функции init объекта myFeature ниже находится строка $.extend(myFeature.config, config)
. Мой фон заставляет меня задаться вопросом, почему строка не $ .extend (this.config, config)? Не будет этот ссылается на родительский объект в теле функции?Попытка лучше подставить объект буквального рисунка
Если это не так, я думаю, что хотел бы использовать шаблон раскрывающего модуля, если я его хорошо понимаю, потому что я могу сделать var self = this; и ссылайтесь на себя по всем свойствам myFeature. Я не понимаю, как в шаблоне объектного литерала свойство init имеет доступ к функции myFeature внутри этой функции. Похоже, что myFeature во всем мире охвачена, и все его свойства и сам по себе могут быть доступны любому пользователю в любое время, я знаю, что это характер JavaScript, и я немного понимаю, но я думаю, что раскрывающий модульный шаблон даст мне доступ к частным/общедоступным, что делает я лучше спал ночью.
var myFeature = {
config : {
wrapper : '#myFeature',
container : 'div',
urlBase : 'foo.php?item='
},
init : function(config) {
$.extend(myFeature.config, config);
$(myFeature.config.wrapper).find('li').
each(function() {
myFeature.getContent($(this));
}).
click(function() {
myFeature.showContent($(this));
});
},
buildUrl : function($li) {
return myFeature.config.urlBase + $li.attr('id');
},
getContent : function($li) {
$li.append(myFeature.config.container);
var url = myFeature.buildUrl($li);
$li.find(myFeature.config.container).load(url);
},
showContent : function($li) {
$li.find('div').show();
myFeature.hideContent($li.siblings());
},
hideContent : function($elements) {
$elements.find('div').hide();
}
};
$(document).ready(function() { myFeature.init(); });
вы можете использовать this.config, если хотите. – dandavis
Очень хорошее объяснение ждет вас, [Нажмите здесь] [1] [1]: http://stackoverflow.com/questions/1600130/javascript-advantages-of-object-literal – HarshSharma