다른 모듈 패턴을 연습하려고합니다. 다음은 서로 다른 페이지의 다른 요소에 사용할 수있는 스크롤 기능의 IIFE 패턴입니다 (목적에 맞는 패턴인지는 확실하지 않음). 자바 스크립트에 대한 새로운, 내게 맨발로하십시오.하위 모듈 구성 설정 외부의 개체 구성 모듈 표시
내 질문은 입니다. 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