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

jQuery.extend(object);
jQuery.extend(object);为扩展jQuery类本身.为类添加新的方法。
jQuery.fn.extend(object);给jQuery对象添加方法。这个应该很好理解吧。举个例子。

1.合并多个对象。
这里使用的就是$.extend()的嵌套多个对象的功能。
所谓嵌套多个对象,有点类似于数组的合并的操作。

<span style="font-size:18px;">//用法: jQuery.extend(obj1,obj2,obj3,..)
var Css1={size: "10px",style: "oblique"}
var Css2={size: "12px",style: "oblique",weight: "bolder"}
$.jQuery.extend(Css1,Css2)
//结果:Css1的size属性被覆盖,而且继承了Css2的weight属性
// Css1 = {size: "12px",style: "oblique",weight: "bolder"}
</span>

2、深度复制

1.  <script type="text/javascript" src="jquery-extend.js"></script> 

2.  <script> 

3.  obj1 = { a : 'a', b : 'b' }; 

4.  obj2 = {  x : { xxx : 'xxx', yyy : 'yyy' },  y : 'y' }; 

5.  $.extend(true, obj1, obj2); 

6.  alert(obj1.x.xxx);  // 得到"xxx" 

7.  obj2.x.xxx = 'zzz'; 

8.  alert(obj2.x.xxx); // 得到"zzz" 

9.  alert(obj1.x.xxx); // 得到"xxx" 

10.</script>  

$.extend(true, obj1, obj2)表示以obj2中的属性扩展对象obj1,第一个参数设为true表示深复制。

虽然obj1中原来没有"x"属性,但经过扩展后,obj1不但具有了"x"属性,而且对obj2中的"x"属性的修改也不会影响到obj1中"x"属性的值,这就是所谓的“深复制”了。

3.可以给jQuery添加静态方法。

(可以看下我之前的弹窗方法)

$.fn.mPop = function() {
$("body").css("position", "relative");
var sctop = top.location == self.location ? $(window).scrollTop() : $(parent.window).scrollTop();
var winW = $(window).width();
var winH = $(window).height();
var tcH = $(document).height();
var w = $(this).innerWidth();
var h = $(this).innerHeight();
$(this).css({"height":winH});
$(".lottery_popup_bg").css({"height":winH});
$(".tips_popup").css({"height":"auto"});
$(this).css({
"left": (winW - w) / 2 + "px",
"z-index": "30"
});
var bgdiv = "<div class='bgdiv'></div>";
$("body").append(bgdiv);
if (h > winH) {
$(this).css({
"display": "block",
"top": "0px"
})
} else {
$(this).css("display", "block").css({
top: ((winH - h) / 2 + sctop) + "px"
});
}
$(".bgdiv").css({
"width": winW + "px",
"height": tcH + "px",
"opacity": 0.8,
"position": "absolute",
"left": "0",
"top": "0",
"z-index": 20,
"background-color": "#000",
"display": "block"
});
}

使用此方法是可以$("xx").mPop();

类似jq中click()。

jq中将extend作为扩展模块的方法使用,在原生js中我们也可以使用。这是我们是为了将两个构造函数结合在一起。

<script>
/*
把父对象的所有属性,直接复制到自己身上
*/ function Cat(leg, tail) {
this.leg = leg;
this.tail = tail;
this.climb = function() {
alert("i can climb!");
};
}; function Tiger(leg, tail, color) {
this.leg = leg;
this.color = color;
this.extend = function(parent){ //复制继承。父对象的属性复制到他自身。原型链继承影响下游所有对象,复制继承不影响下游(jq复制继承)
for(var key in parent){
//console.log(key);
this[key] = parent[key];//循环复制添加给Tiger的this属性
};
};
}; var tiger = new Tiger(5,1,"#f00");
console.log(tiger.leg);//5
tiger.extend(new Cat(4,1));//重新赋值
tiger.climb();//i can climb!
console.log(tiger.leg);//
</script>

jQuery extend方法介绍的更多相关文章

  1. jQuery extend方法使用及实现

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

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

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

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

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

  4. jQuery extend 方法使用 (转)

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

  5. jQuery extend方法详解

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

  6. jquery.extend方法

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

  7. jQuery.extend方法和开发中变量的复用

    最近在用commonJS规范进行客户端开发,遇到如下问题: 一般一个模块内部可能会定义一系列变量或一系列相关变量,比如写了一个颜色选择弹框模块大概会有如下变量定义 var settings = { / ...

  8. jQuery.extend()方法

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

  9. JQuery基本方法介绍和使用

    1.属性 $("p").addClass(css中定义的样式类型); 给某个元素添加样式 常用于表格鼠标移动效果 $(document).ready(function(){ //& ...

随机推荐

  1. Understanding GC pauses in JVM, HotSpot's minor GC.

    原文地址:http://blog.griddynamics.com/2011/06/understanding-gc-pauses-in-jvm-hotspots.html Stop-the-worl ...

  2. oracle_执行计划_谓词信息和数据获取(access and filter区别) (转)

    These two terms in the Predicate Information section indicate when the data source is reduced. Simpl ...

  3. Mysql 主从复制,读写分离设置

    一个简单完整的 Mysql 主从复制,读写分离的示意图. 1. 首先搭建 Mysql 主从架构,实现 将 mater 数据自动复制到 slave MySQL 复制的工作方式很简单,一台服务器作为主机, ...

  4. 【转】Java中本地时间的获取方法--不错

    原文网址:http://highforest.blog.51cto.com/125539/842496/ 熟悉Oracle数据库的人,应该知道:select to_char(sysdate,'yyyy ...

  5. android 解析文章,通过JSON格式请求传递 的好文章,这里记录一下

    http://blog.sina.com.cn/s/blog_8d955f8c0100xv7i.html http://blog.163.com/zhangzheming_282/blog/stati ...

  6. HDOJ 1016 Prime Ring Problem素数环【深搜】

    Problem Description A ring is compose of n circles as shown in diagram. Put natural number 1, 2, -, ...

  7. [Data Structure] 二叉搜索树(Binary Search Tree) - 笔记

    1. 二叉搜索树,可以用作字典,或者优先队列. 2. 根节点 root 是树结构里面唯一一个其父节点为空的节点. 3. 二叉树搜索树的属性: 假设 x 是二叉搜索树的一个节点.如果 y 是 x 左子树 ...

  8. Diamond Armor - The most expensive Suit: 2.8 Mio Swiss Francs

    Diamond Armor - The most expensive Suit: 2.8 Mio Swiss Francs Diamond Armor

  9. config large memory

    C Configuring Large Memory Optimization This appendix provides information for configuring memory op ...

  10. Extjs 4.2.0 MVC 架构

    内容: 1. 文件结构 2. 创建项目 3. 定义控制器 4. 定义视图 5. 控制Grid 6. 创建Model和Store 7. 通过Model保存数据 8. 保存到服务器端 大型客户端程序通常都 ...