簡體   English   中英

JS顯示模塊模式,我在做什么錯

[英]JS Revealing module Pattern, What Am I doing Wrong

我一直在嘗試利用顯示模塊模式,並認為我會為非CSS3自定義滾動條提供功能。

var sb=(function($){

//Private
var settings=function(props){
    return{
        wrapper: props.wrapper ? document.getElementById(props.wrapper):null,
        thumb: props.thumb ? document.getElementById(props.thumb):null,
        track: props.track ? document.getElementById(props.track):null,
        left: props.left ? props.left:null,
        right: props.right ? props.right:null,
        contentWidth: props.contentWidth? props.contentWidth:null
    };
};

var LOG=function(input){
    console.log(input)
};

//Object Literal
return{
    Log:LOG,
    settings:settings
};

})(jQuery);

以上是模塊。 我正在像這樣設置值:

window.onload=function(){
    sb.settings({wrapper:'bodyWrapper',thumb:'thumb',track:'track'});
}

但是,當我嘗試對其進行測試時,會不斷出現“未定義”和其他錯誤。 在模塊內部運行console.log(settings.wrapper)返回undefined 我真的不知道我要去哪里錯,所以任何幫助將不勝感激。 提前致謝

在模塊內部運行console.log(settings.wrapper)返回undefined

當然,因為settings是函數對象(沒有wrapper屬性),並且在調用該對象時未返回該對象。 你好像要

var sb = (function(){

    // private variables
    var settings = {};

    // public (exported) properties
    return {
        log: function(input) {
            console.log(input);
        },
        getSetting: function(name) {
            return settings[name];
        },
        setSettings: function(props){
            settings = { // assign to the private variable!
                wrapper: props.wrapper ? document.getElementById(props.wrapper) : null,
                thumb: props.thumb ? document.getElementById(props.thumb) : null,
                track: props.track ? document.getElementById(props.track) : null,
                left: props.left || null,
                right: props.right || null,
                contentWidth: props.contentWidth || null
            };
            return true;
        }
    };

})();

window.onload = function(){
    sb.setSettings({wrapper:'bodyWrapper',thumb:'thumb',track:'track'});
    sb.log(sb.getSetting("wrapper"));
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM