• jQuery中extend()实现原理


    jQuery.extend使用的几种方式

    1.jQuery.extend(源对象)

     1 jQuery源代码:
     2 
     3 if(length == i){
     4      target = this;
     5      --i;  
     6 }
     7 
     8 示例1:
     9 
    10 var person = {  
    11     sex      : 'male',  
    12     showName : function(name){  
    13             alert("Name: " + name);  
    14     }  
    15 };  
    16 jQuery.extend(person); // 将person对象扩展到jQuery($)对象上  
    17 jQuery.showName("admin"); // Name: admin  
    18 $.showName("admin"); // Name: amdin  
    19 alert("Sex: " + $.sex); // Sex: male

    2.jQuery.extend(目标对象,源对象)

     1 var person = {  
     2     language : ['java', 'c++', 'sql'],  
     3     showName : function(name){  
     4         alert("Name: " + name);  
     5     }  
     6 };  
     7 var student = {  
     8     showNum : function(num){  
     9         alert("Num: " + num);  
    10     }  
    11 };  
    12 jQuery.extend(student, person); // 将person对象扩展到指定的student对象上  
    13 student.showName("admin");  
    14 alert(student.language);

    3.jQuery.extend(boolean,源对象)

     1 var person = {  
     2     language : ['java', 'c++', 'sql'],  
     3     showName : function(name){  
     4         alert("Name: " + name);  
     5     }  
     6 };  
     7 jQuery.extend(true, person); // 将person对象扩展jQuery对象上  
     8 alert($.language); // java, c++, sql  
     9 $.language.push('PL/SQL'); // 修改扩展后的对象  
    10 alert(person.language); // java, c++, sql  
    11 person.language.pop();

     从上面例子中可以看出对$.language的修改不会影响到person中的language属性。这就是深度复制

    4.jQuery.extend(boolean,目标对象,源对象)

     1 var person = {  
     2     showName : function(name){  
     3         alert("Name: " + name);  
     4     }  
     5 };  
     6 var student = {  
     7     language : ["java", "c++", "javascript"],  
     8     showNum : function(num){  
     9         alert("Num: " + num);  
    10     }  
    11 };  
    12 var target = jQuery.extend(person, student);  
    13 alert(target.language);     // java, c++, javascript  
    14 target.language.push("PL/SQL");  
    15 alert(student.language);    // java, c++, javascript, PL/SQL  
    16 student.language.pop();  
    17 alert(target.language);     // java, c++, javascript  
    18 var target2 = jQuery.extend(true, person, student);  
    19 alert(target2.language);    // java, c++, javascript  
    20 target2.language.push("PL/SQL");  
    21 alert(student.language);    // java, c++, javascript  
    22 student.language.pop();  
    23 alert(target2.language);    // java, c++, javascript, PL/SQL

    转载自http://www.jb51.net/article/61478.htm

  • 相关阅读:
    C
    A
    G
    B
    一些新玩意:
    Angular常用功能
    node学习笔记(四)
    node学习笔记(三)
    node学习笔记(二)
    node学习笔记
  • 原文地址:https://www.cnblogs.com/laoniaofly/p/6480510.html
Copyright © 2020-2023  润新知