我正在嘗試練習不同的模塊模式。下面是一個滾動功能的IIFE模式,可以用於不同頁面中的不同元素(不確定這是用於此目的的正確模式)。 JavaScript新增功能,請隨身攜帶。Chage可配置設置的外部對象顯示模塊模式
我的問題是 1.如何替換IIFE模塊外的config = {}選項? 2.我爲每一個函數命名,不知道這是寫這種代碼的過度殺手還是建議的方法。 3.爲什麼會是更好的模塊模式?
;(function($, ScrollToTop, undefined) {
'use strict';
var clickedElem = $('[data-scroll]');
var config = {
scrollDistance: 500,
speed: 300
};
var _scrollToTargetAnimation = function() {
$('body').animate({
scrollTop: $($(this).data('scroll')).offset().top
}, config.speed);
return false; //stop bubbling
};
var _showHideAnimation = function() {
if ($(this).scrollTop() > config.scrollDistance) {
clickedElem.fadeIn(config.speed);
} else {
clickedElem.fadeOut(config.speed);
}
};
ScrollToTop.showHide = function() {
if ($('.top-bar').length) return;
$(document).scroll(_showHideAnimation);
};
ScrollToTop.clickBtn = function() {
clickedElem.on('click', _scrollToTargetAnimation);
};
ScrollToTop.init = function (config) {
$.extend(this.config, config);
ScrollToTop.showHide();
ScrollToTop.clickBtn();
};
})(jQuery, window.ScrollToTop = window.ScrollToTop || {});
$(function() {
config = {
scrollDistance: 500,
speed: 300
};
ScrollToTop.init(config);
});
感謝您的解決方案。我仍然有幾個問題。 1.爲什麼當我在模塊外部傳遞新配置時,$ .extend不起作用? – user2734550 2015-02-09 21:54:03