就是实现复制的一个过程

  1. (function() {
  2. var Explode = function(container, params) {
  3. 'use strict';
  4. var n = this;
  5. if(!(this instanceof Explode)) return new Explode(container, params);
  6. var defaults = {
  7. img: 'chi2.png',
  8. type: 1
  9. };
  10. params = params || {}; /*有参数传递进来赋给params,没有为空*/
  11. var originalParams = {}; /*备份传进来的params*/
  12. for(var param in params) { /*遍历params*/
  13. if(typeof params[param] === 'object') { /*如果是对象,继续遍历该对象,再赋值*/
  14. originalParams[param] = {};
  15. for(var deepParam in params[param]) {
  16. originalParams[param][deepParam] = params[param][deepParam];
  17. }
  18. } else { /*不是对象,直接赋值*/
  19. originalParams[param] = params[param];
  20. }
  21. };
  22. for(var def in defaults) { /*遍历默认的参数,如果传入的参数没有定义到,则把默认值加进来,若已定义,则默认值没用*/
  23. if(typeof params[def] === 'undefined') { /*比如:如果params[img]没有定义,则使用默认值*/
  24. params[def] = defaults[def];
  25. } else if(typeof params[def] === 'object') {
  26. for(var deepDef in defaults[def]) {
  27. if(typeof params[def][deepDef] === 'undefined') {
  28. params[def][deepDef] = defaults[def][deepDef];
  29. }
  30. }
  31. }
  32. };
  33. n.params = params;
  34. n.originalParams = originalParams;
  35. n.container = typeof container === 'string' ? document.querySelectorAll(container) : container;
  36. if(!n.container || (n.container.length && n.container.length == 0)) return; /*没有container直接return*/
  37. if(n.container.length && n.container.length > 1) { /*有container且个数大于1*/
  38. var s = [];
  39. for(var i = 0; i < n.container.length; i++) {
  40. s.push(new Explode(n.container[i], params));
  41. };
  42. return s;
  43. };
  44. n.container = n.container[0] || n.container; /*有且仅有一个container*/
  45. })()

【JavaScript】插件参数的写法的更多相关文章

  1. 如何开发原生的 JavaScript 插件(知识点+写法)

    一.前言 通过 "WWW" 原则我们来了解 JavaScript 插件这个东西 第一个 W "What" -- 是什么?什么是插件,我就不照搬书本上的抽象概念了 ...

  2. 谈谈javascript插件的写法

    插件顾名思义就是能在一个页面多处使用, 各自按自己的参数配置运行, 并且相互不会冲突. 会写javascript插件是进阶js高级的必经之路, 也是自己所学知识的一个典型的综合运用. 如果你还没头绪, ...

  3. JavaScript中以一个方法作为参数的写法

    前言,我们写js的时候,经常会看到一些方法,比如说: $("#ids").click(function( alert("Click me"); )); ---- ...

  4. 初学者--bootstrap(五)JavaScript插件(上)----在路上(6)

    jQuery 插件为 Bootstrap 的组件赋予了“生命”.可以简单地一次性引入所有插件,或者逐个引入到你的页面中. 一:首先要确认的是,单个还是全部引入: JavaScript 插件可以单个引入 ...

  5. 大熊君JavaScript插件化开发------(实战篇之DXJ UI ------ ItemSelector)

    一,开篇分析 Hi,大家好!大熊君又和大家见面了,还记得前两篇文章吗.主要讲述了以“jQuery的方式如何开发插件”,以及过程化设计与面向对象思想设计相结合的方式是 如何设计一个插件的,两种方式各有利 ...

  6. jquery插件 - 学习笔记 (插件参数及函数的调用)

    今天研究的是jquery插件的基本写法: 比如我打算写一个名为 ImageZoom 的插件 前台调用: <script src="ImageZoom.js"></ ...

  7. Bootstrap3.0学习教程十七:JavaScript插件模态框

    这篇文章中我们主要来学习一下JavaScipt插件模态框.在学习模态框之前,我们先来了解一下JavaScript插件吧. JavaScript插件概览 插件可以单个引入(使用Bootstrap提供的单 ...

  8. (转)Javascript匿名函数的写法、传参、递归

    (原)http://www.veryhuo.com/a/view/37529.html (转)javascript匿名函数的写法.传参和递归 javascript匿名函数的写法.传参和递归 http: ...

  9. (转)javascript匿名函数的写法、传参和递归

    (原)http://www.veryhuo.com/a/view/37529.html (转)javascript匿名函数的写法.传参和递归 http://www.veryhuo.com 2011-0 ...

随机推荐

  1. golang学习之slice基本操作

    slice的增删改查: //删除 func remove(slice []interface{}, i int) []interface{} { // copy(slice[i:], slice[i+ ...

  2. 实例-PHP_SELF、 SCRIPT_NAME、 REQUEST_URI区别-获取前台公用文-dirname-PHP的"魔术常量"-str_replace

    Part1:实例 $_SERVER[PHP_SELF], $_SERVER[SCRIPT_NAME], $_SERVER['REQUEST_URI'] 在用法上是非常相似的,他们返回的都是与当前正在使 ...

  3. CodeForces 616A(水题)

    while(t--) 最后结果t=-1 #include <iostream> #include <string> #include <cstring> #incl ...

  4. 学习ssm心得

    学习是一个探索的过程,在我编程能力提高的阶段中,我发现在编写代码之前,必须得弄清代码的逻辑,我到底要干什么,从哪一步做起.端与端之间该怎么衔接. 先把问题想清楚,再去编写.不要急着去乱敲一通,一点用处 ...

  5. Breakpoint debugging

    断点调试的作用: A:查看程序的执行流程. B:调试程序. package basic.java; public class DebugTest { public static void main(S ...

  6. 安卓app开发-04- app运行的运行和调试

    app 运行的运行和调试 本篇介绍在 Android Studio 开发工具,运行调试设备:真机和虚拟机. 真机调试(USB 连接手机) 尽量使用真机进行调试,无论是调试效果和速度都比模拟器要好.使用 ...

  7. 客户端和服务端如何使用Token和Session

    一.我们先解释一下他的含义:    1.Token的引入:Token是在客户端频繁向服务端请求数据,服务端频繁的去数据库查询用户名和密码并进行对比,判断用户名和密码正确与否,并作出相应提示,在这样的背 ...

  8. python笔记8-多线程threading之封装式

    执行函数 1.先写一个执行函数,用来实现做某件事情,不同的人吃火锅用一个参数people代替. # coding=utf-8 import threading import time def chiH ...

  9. @Autowired和@Resource注解的区别

    @Autowired注解是按类型装配依赖对象,默认情况下它要求依赖对象必须存在,如果允许null值,可以设置它required属性为false.如果我们想使用按名称装配,可以结合@Qualifier注 ...

  10. Asp.Net MVC Identity 2.2.1 使用技巧(一)

    开发环境:vs2015 UP3  or  vs2017RC  项目环境:asp.net 4.6.1   identity版本为:asp.net identity 2.2.1 1.创建项目. 没什么好说 ...