jquery中的extend方法通過不同的引數實現了幾種不同的繼承方法:
jquery.extend = jquery.fn.extend = function() , i = 1, length = arguments.length, deep = false, options;
// handle a deep copy situation
/*如果第乙個引數為boolean值,則取第二個引數為目標物件*/
if ( target.constructor == boolean ) ;
// skip the boolean and the target
i = 2;
}// handle case when target is a string or something (possible in deep copy)
/*如果目標引數不是object或者function,那麼就有可能是深度copy,*/
if ( typeof target != "object" && typeof target != "function" )
target = {};
// extend jquery itself if only one argument is passed /*如果引數長度為1,則將引數表示的物件的屬性和方法復 製給jquery本身*/
if ( length == i )
for ( ; i < length; i++ )
// only deal with non-null/undefined values當引數都為非空時,
if ( (options = arguments[ i ]) != null )
// extend the base object
for ( var name in options ) )
, copy );
// don't bring in undefined values /*正常情況下的繼承實現*/
else if ( copy !== undefined )
target[ name ] = copy;
}// return the modified object
return target;
};jquery.fn.extend,而在程式的前面已經將jquery.prototype賦值給jquery.fn了,所以在後面的呼叫中會出現jquery.extend()和jquery.fn.extend()的不同呼叫,這兩個方法呼叫產生的結果也不一樣,jquery.extend()的呼叫並不會把方法擴充套件到物件的例項上,引用它的方法也需要通過jquery類來實現,如jquery.init(),而jquery.fn.extend()的呼叫把方法擴充套件到了物件的prototype上,所以例項化乙個jquery物件的時候,它就具有了這些方法,這是很重要的,在jquery.js中到處體現這一點
jQuery的繼承extend的方法實現的簡單理解
這個版本是2.1版本首先上 jquery.extend jquery.fn.extend function i 1,length arguments.length,deep false handle a deep copy situation 處理乙個深拷貝的情況 if typeof target ...
jquery的優良繼承方法
說一下好處 這個封裝函式可以可以實現子類繼承父類原型物件裡面的所有方法和屬性,但是也留了第二條路,去繼承父類建構函式的裡面的東西。兩個引數分別是子類的建構函式,後面是父類建構函式 inherits function childctor,parentctor 把父類的原型方法賦給第三方建構函式的原型物...
js繼承的實現
1 繼承第一種方式 物件冒充 function parent username function child username,password var parent new parent zhangsan var child new child lisi 123456 parent.hello c...