jQuery extend方法介绍

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);//4
    </script>
时间: 2024-08-20 13:37:55

jQuery extend方法介绍的相关文章

jQuery extend方法使用及实现

一.jQuery extend方法介绍 jQuery的API手册中,extend方法挂载在jQuery和jQuery.fn两个不同对象上方法,但在jQuery内部代码实现的是相同的,只是功能却不太一样: 且看官方给出解释: jQuery.extend(): Merge the contents of two or more objects together into the first object.(把两个或者更多的对象合并到第一个当中): jQuery.fn.extend():Merge t

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

最近在用commonJS规范进行客户端开发,遇到如下问题: 一般一个模块内部可能会定义一系列变量或一系列相关变量,比如写了一个颜色选择弹框模块大概会有如下变量定义 var settings = { //设置它是否绝对定位 position: { //定位可以是绝对定位,可以是相对定位(需要有target),也可以是默认定位 type: "none", top: 30, left: 30, //表示相对于目标的定位 target: "", zindex: 0 }, /

对jQuery.extend()方法的分析

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

jquery.extend方法

jquery.extend()用来扩展jquery中方法,实现插件. 1.jQuery.extend函数详细用法! 扩展jQuery静态方法. 1$.extend({2test:function(){alert('test函数')}3}) 用法: $.test() 2.jQuery.extend 函数详解 上述两个虽说叫详解,讲解都很简略,下面这篇好一点. 3.jQuery $.extend()用法总结 jQuery.extend(object);为扩展jQuery类本身.为类添加新的方法. j

Jquery extend() 方法

Jquery 中$.extend() 方法用于实现合并多个对象的属性到第一个对象中. $.extend(object1, [object2] ); 将后两个对象即object1和object2中的属性合并到object1中,默认是合并覆盖操作,不进行迭代. 此时object1 对object2 的拷贝为浅拷贝(公用一份实体,仅仅是引用变量不同) <script type="text/javascript"> obj1 = {a: "this is a",

jQuery extend方法使用

  $(function () { var object1 = { apple: 0, banana: {weight: 52, price: 100}, cherry: 97 }; var object2 = { banana: {price: 200}, durian: 100 }; /* object2 合并到 object1 中 */ $.extend(object1, object2); /*判断是否存在对象如果有则直接调用该对象将普通对象转换成json数据 否则创建一个函数用于讲普通

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

jQuery自定义了jQuery.extend()和jQuery.fn.extend()方法.其中jQuery.extend()方法能够创建全局函数或者选择器,而jQuery.fn.extend()方法能够创建jQuery对象方法. 例如: jQuery.extend({ showName : function(name){ alert(name) } }); jQuery.showName("深蓝"); jQuery.extend()除了可以创建插件外,还可以用来扩展jQuery对象

理解一下jQuery.extend()和jQuery.fn.extend()方法

为了方便用户创建插件,jquery提供了jQuery.extend()和jQuery.fn.extend()方法.1. jQuery.extend() 方法有一个重载. jQuery.extend(object) ,一个参数的用于扩展jQuery类本身,也就是用来在jQuery类/命名空间上增加新函数,或者叫静态方法,例如jQuery内置的 ajax方法都是用 jQuery.ajax()这样调用的,有点像 "类名.方法名" 静态方法的调用方式.下面我们也来写个jQuery.extend

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

jQuery自定义了jQuery.extend()和jQuery.fn.extend()方法. 其中jQuery.extend()方法能够创建全局函数或者选择器, 而jQuery.fn.extend()方法能够创建jQuery对象方法. 例如: 复制代码代码如下: jQuery.extend({ showName : function(name){ alert(name) } }); jQuery.showName("深蓝"); jQuery.extend()除了可以创建插件外,还可以