1. 程式人生 > >【JavaScript】插件參數的寫法

【JavaScript】插件參數的寫法

log var [0 gin script ams selector lpar cti

就是實現復制的一個過程

(function() {
    var Explode = function(container, params) {
        ‘use strict‘;
        var n = this;
        if(!(this instanceof Explode)) return new Explode(container, params);
        var defaults = {
            img: ‘chi2.png‘,
            type: 1
        };
        params = params || {};    /*
有參數傳遞進來賦給params,沒有為空*/ var originalParams = {}; /*備份傳進來的params*/ for(var param in params) { /*遍歷params*/ if(typeof params[param] === ‘object‘) { /*如果是對象,繼續遍歷該對象,再賦值*/ originalParams[param] = {}; for(var deepParam in params[param]) { originalParams[param][deepParam]
= params[param][deepParam]; } } else { /*不是對象,直接賦值*/ originalParams[param] = params[param]; } }; for(var def in defaults) { /*遍歷默認的參數,如果傳入的參數沒有定義到,則把默認值加進來,若已定義,則默認值沒用*/ if(typeof params[def] === ‘undefined‘) { /*比如:如果params[img]沒有定義,則使用默認值
*/ params[def] = defaults[def]; } else if(typeof params[def] === ‘object‘) { for(var deepDef in defaults[def]) { if(typeof params[def][deepDef] === ‘undefined‘) { params[def][deepDef] = defaults[def][deepDef]; } } } }; n.params = params; n.originalParams = originalParams; n.container = typeof container === ‘string‘ ? document.querySelectorAll(container) : container; if(!n.container || (n.container.length && n.container.length == 0)) return; /*沒有container直接return*/ if(n.container.length && n.container.length > 1) { /*有container且個數大於1*/ var s = []; for(var i = 0; i < n.container.length; i++) { s.push(new Explode(n.container[i], params)); }; return s; }; n.container = n.container[0] || n.container; /*有且僅有一個container*/ })()

【JavaScript】插件參數的寫法