最近在用commonJS规范进行客户端开发,遇到如下问题:

一般一个模块内部可能会定义一系列变量或一系列相关变量,比如写了一个颜色选择弹框模块大概会有如下变量定义

  1. var settings = {
  2. //设置它是否绝对定位
  3. position: {
  4. //定位可以是绝对定位,可以是相对定位(需要有target),也可以是默认定位
  5. type: "none",
  6. top: 30,
  7. left: 30,
  8. //表示相对于目标的定位
  9. target: "",
  10. zindex: 0
  11. },
  12. //单击选择颜色结束是否关闭
  13. isClose: true,
  14. //表示颜色块单击(返回一个数组,表示选中的颜色和隐藏颜色)
  15. onClick: function (colors) {
  16.  
  17. },
  18. onClose: function () {
  19.  
  20. }
  21. };

这些参数不经内部用到,而且需要提供调用初始化。你的实现代码可能是这样:

  1. //修改默认配置
  2. var setup = function (_settings) {
  3. if (_settings) {
  4. if (_settings.onClick && $.isFunction(_settings.onClick)) {
  5. settings.onClick = _settings.onClick;
  6. }
  7. if (_settings.position) {
  8. if (_settings.position.type)
  9. settings.position.type = _settings.position.type;
  10. if (_settings.position.top)
  11. settings.position.top = _settings.position.top;
  12. if (_settings.position.left)
  13. settings.position.left = _settings.position.left;
  14. if (_settings.position.target)
  15. settings.position.target = _settings.position.target;
  16. if (_settings.position.zindex)
  17. settings.position.zindex = _settings.position.zindex;
  18. }
  19. if (_settings.isClose) {
  20. settings.isClose = _settings.isClose;
  21. }
  22. }
  23. };

但事实上我们可以利用jQuery的extend方法大大简化代码

以上代码可以简化为

  1. //修改默认配置
  2. var setup = function (_settings) {
  3. $.extend(settings, _settings || {});//浅复制
        $.extend(true,settiings,_settings||{});
  4. };

具体jQuery.extend用法可以参考

http://www.cnblogs.com/RascallySnake/archive/2010/05/07/1729563.html

jQuery.extend方法和开发中变量的复用的更多相关文章

  1. jQuery extend方法使用及实现

    一.jQuery extend方法介绍 jQuery的API手册中,extend方法挂载在jQuery和jQuery.fn两个不同对象上方法,但在jQuery内部代码实现的是相同的,只是功能却不太一样 ...

  2. jQuery extend 方法使用 (转)

    方法介绍 jQuery 的 API 手册中,extend 方法挂载在 jQuery 和 jQuery.fn 两个不同的对象上,但在 jQuery 内部代码实现的是相同的,只是功能各不相同. 先看看官方 ...

  3. jQuery extend方法详解

    先说个概念的东西: jQuery为开发插件提拱了两个方法,分别是: $.fn.extend(item):为每一个实例添加一个实例方法item.($("#btn1") 会生成一个 j ...

  4. 对jQuery.extend()方法的分析

    jQuery.extend方法是我们常用的方法,也是jQuery源码中的基础方法.它的主要作用是:将一个或多个“源对象”合并到一个“目标对象”中,并返回目标对象.它主要有三种表现形式: a.jQuer ...

  5. jQuery extend方法介绍

    jQuery为开发插件提拱了两个方法,分别是: jQuery.fn.extend(object); jQuery.extend(object); jQuery.extend(object);为扩展jQ ...

  6. jquery.extend方法

    jquery.extend()用来扩展jquery中方法,实现插件. 1.jQuery.extend函数详细用法! 扩展jQuery静态方法. 1$.extend({ 2test:function() ...

  7. jQuery 源码解析二:jQuery.fn.extend=jQuery.extend 方法探究

    终于动笔开始 jQuery 源码解析第二篇,写文章还真是有难度,要把自已懂的表述清楚,要让别人听懂真的不是一见易事. 在 jQuery 源码解析一:jQuery 类库整体架构设计解析 一文,大致描述了 ...

  8. jQuery.extend()方法

    定义和用法 jQuery.extend()函数用于将一个或多个对象的内容合并到目标对象. 注意: 1. 如果只为$.extend()指定了一个参数,则意味着参数target被省略.此时,target就 ...

  9. jQuery.extend()、jQuery.fn.extend()扩展方法示例详解

    jQuery自定义了jQuery.extend()和jQuery.fn.extend()方法.其中jQuery.extend()方法能够创建全局函数或者选择器,而jQuery.fn.extend()方 ...

随机推荐

  1. HTML+CSS 整站 步骤

    文件夹管理: CSS JS img font html 根据设计图,划分区块 ,即页面布局 重置样式 ;padding:0;} 写main.css  注意:1 距离尽量使用偶数,避免奇数 2 在使用定 ...

  2. (转)META http-equiv="refresh" 实现网页自动跳转

    ***.html自动跳转文件代码如下: <HTML> <HEAD><META http-equiv="Refresh" content="5 ...

  3. python基础知识九

    sys模块 sys模块包含系统对应的功能.我们已经学习了sys.argv列表,它包含命令行参数. 命令行参数 例14.1 使用sys.argv #!/usr/bin/python # Filename ...

  4. android studio 无法在可视化页面预览布局文件

    Rendering Problems the following classes could not be found:android.support.v7.internal.widget.Actio ...

  5. asp.net 操作INI文件的读写,读写操作本地ini配置文件

    using System; using System.Data; using System.Configuration; using System.Web; using System.Web.Secu ...

  6. cocos2dx 实现不一样的ScrollView

    原来在公司被迫加班加点赶工,用lua实现的版本:http://www.cnblogs.com/mmc1206x/p/4146911.html 后来因我个人的需要, 用C++实现了一个版本. 蓦然回首, ...

  7. PHP 内存不足

    今天编写数据库备份类时,在运行的过程中,出现了内存不足的问题,提示:Fatal error: Allowed memory size of 25165824 bytes exhausted (trie ...

  8. Angularjs中编写指令模版

    angular.module('moduleName', []).directive( 'namespaceDirectiveName', [ function() { return { restri ...

  9. ava下static关键字用法详解

    Java下static关键字用法详解 本文章介绍了java下static关键字的用法,大部分内容摘自原作者,在此学习并分享给大家. Static关键字可以修饰什么? 从以下测试可以看出, static ...

  10. 解决GDB输出Qt内置类型的显示问题

    自从GDB 7.0之后,就加入了Pretty-Printer的这个概念.简单理解就是他可以让你用Python写一串脚本,然后让gdb去读取这串脚本后,可以自由的输出由你想自己定义的格式.我们直接举个简 ...