jQuery.extend = jQuery.fn.extend = function() {
// copy reference to target object
var target = arguments[0] || {}, a = 1, al = arguments.length, deep = false;
// Handle a deep copy situation
//這個(gè)IF條件基本上總是false,只有當(dāng)target對(duì)象是布爾類型時(shí)才會(huì)是真,也就是這段代碼好像沒(méi)有什么作用
if ( target.constructor == Boolean ) {
deep = target;
target = arguments[1] || {};
}
// extend jQuery itself if only one argument is passed
if ( al == 1 ) {
target = this;
a = 0;
}
var prop;
for ( ; a < al; a++ )
// Only deal with non-null/undefined values
if ( (prop = arguments[a]) != null )
// Extend the base object
for ( var i in prop ) {
// Prevent never-ending loop
這一段代碼不知道怎么搞的,說(shuō)是用來(lái)阻止死循環(huán),但我怎么也不明白他是如何阻止的,好像卻了他也沒(méi)什么影響。
if ( target == prop[i] )
continue;
// Recurse if we're merging object values
if ( deep && typeof prop[i] == 'object' && target[i] )
jQuery.extend( target[i], prop[i] );
// Don't bring in undefined values
else if ( prop[i] != undefined )
target[i] = prop[i];
}
// Return the modified object
return target;
};