目標:
$.extend(
})
console.log($.add(1,2));
是怎麼實現可以將add函式掛在jquery後面?
jquery -v1.12.4
1 jquery.extend = jquery.fn.extend = function() ,
4 i = 1,
5 length =arguments.length,
6 deep = false;7
8//handle a deep copy situation
9if ( typeof target === "boolean") ;
14 i++;15}
1617
//handle case when target is a string or something (possible in deep copy)
18if ( typeof target !== "object" && !jquery.isfunction( target ) ) ;20}
2122
//extend jquery itself if only one argument is passed
23if ( i ===length )
2728
for ( ; i < length; i++)
4243
//recurse if we're merging plain objects or arrays
44if ( deep && copy && ( jquery.isplainobject( copy ) ||
45 ( copyisarray =jquery.isarray( copy ) ) ) ) else;53
}5455//
never move original objects, clone them
56 target[ name ] =jquery.extend( deep, clone, copy );
5758
//don't bring in undefined values
59 } else
if ( copy !==undefined ) 62}
63}64}
6566
//return the modified object
67return
target;
68 };
分析:
第3行:取到函式add
第23-26行:將this也就是jquery的例項物件,function(selector, context){} 賦值給target.
第31行:將函式add賦值給options,並進行遍歷。
第36行:將options = }的函式賦值給copy.
第60行:通過target[name]=copy; 將jquery的例項新增乙個屬性add 就成了jquery['add']=function (a,b);
jQuery原始碼之extend的實現
extend是jquery中乙個比較核心的 如果有檢視jquery的原始碼的話,就會發現jquery在多處呼叫了extend方法。作用對任意物件進行擴充套件 擴充套件某個例項物件 對jquery本身的例項方法進行擴充套件 實現基礎版本,對簡單物件進行擴充套件 jquery.prototype.ext...
jQuery原始碼學習之extend
extend用於合併物件,可選擇是否深複製。使用時,第乙個引數為合併後的物件。如果要進行深拷貝,則引數1為true,引數2為要合併的目標物件。儘管jquery官方文件明確指出第乙個引數是false的呼叫情況並不支援,但是這個版本的原始碼中,判斷第乙個引數的型別雖有限定是boolean型別,但卻未對其...
JQuery 原始碼解析 extend 詳解
前言 最近想重寫乙個dropdown外掛程式,於是想到了使用jquey實現外掛程式,於是重溫了一波 extend 的知識,然後總結了這篇筆記 正文 extend src 該方法將src合併到jquery的例項物件中去 下面是乙個例子 var newsrc extend src1,src2,src3....