zoukankan      html  css  js  c++  java
  • 【JavaScript】插件参数的写法

    就是实现复制的一个过程

    (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*/
    })() 
  • 相关阅读:
    【WPF】代码触发Button点击事件
    [WPF]静态资源(StaticResource)和动态资源(DynamicResource)
    stm32f103_arduino
    解除github下载的文件的锁定
    c# wpf binding
    mysql 使用可能遇到的问题
    c# progressbar
    STM32串口IAP(YModem) (转载)
    VS2017、VS2019安装包制作(转)
    八、ES集群搭建
  • 原文地址:https://www.cnblogs.com/yujihang/p/7002959.html
Copyright © 2011-2022 走看看