关于jQuery的$.extend()

常见的拷贝方式

常规拷贝

需要注意的是,相同键值对的情况下,作为被合并的对象中的后者会覆盖前者的值,如下所示,被合并的对象有obj1、obj2、obj3,obj2的val2会将obj1的val2覆盖了

		 var obj1= {
    
     val1: "1" ,val2:"11"};
        var obj2 = {
    
     val2: "2" };
        var obj3 = {
    
     val3: "3" };
        $.extend(obj1, obj2, obj3);
         alert(JSON.stringify(obj1)); //{"val1":"1","val2":"2","val3":"3"}

浅拷贝

jq默认为浅拷贝,可以看出浅拷贝后者会将前者的相同key的值覆盖掉。

var result=$.extend({
    
    },{
    
    name:"111",info:{
    
     class:"1",grade:"6"}},{
    
    name:"111",info:{
    
     grade:"4"}});
        alert(JSON.stringify(result));//{"name":"111","info":{"grade":"4"}}

深拷贝

可以看出深拷贝会合并相同key对应的value

var result=$.extend(true,{
    
    },{
    
    name:"111",info:{
    
     class:"1",grade:"6"}},{
    
    name:"111",info:{
    
     grade:"4"}});
        alert(JSON.stringify(result));//{"name":"111","info":{"class":"1","grade":"4"}}

对指定对象设置静态方法

将静态方法储存的jQuery全局对象中

$.extend({
    
     SayHello: function (value) {
    
     alert(value); } });
         $.SayHello("xiaoming");

将方法设置到所有实例中

对jQuery.prototype进得扩展,就是为jQuery类添加“成员函数”。jQuery类的实例可以使用这个“成员函数”。 比如我们要开发一个插件,做一个特殊的编辑框,当它被点击时,便alert 当前编辑框里的内容。可以这么做:

<button class="btn" id="123">测试按钮</button>

$.fn.extend({
    
    
            alertWhileClick: function () {
    
    
                $(this).click(function () {
    
    
                    alert("hello world");
                });
            }
        });
        $(".btn").alertWhileClick();

参考文献

jquery extend用法
extend用法

猜你喜欢

转载自blog.csdn.net/shark_chili3007/article/details/118385682