我遇到一些麻煩了解IF子句從專業JavaScript的設計模式這一功能的結尾:JavaScript的繼承擴展功能
function extend(subClass, superClass) {
var F = function() {};
F.prototype = superClass.prototype;
subClass.prototype = new F();
subClass.prototype.constructor = subClass;
subClass.superclass = superClass.prototype;
if(superClass.prototype.constructor == Object.prototype.constructor) {
superClass.prototype.constructor = superClass;
}
}
書中解釋說,這些線路保證父類的構造函數屬性是正確的設置,即使超類是Object類本身。然而,如果我忽略那些三線並執行以下操作:
function SubClass() {};
extend(SubClass, Object);
alert(Object.prototype.constructor == Object);
警報說,「真」,這意味着父類的構造函數設置是否正確,即使沒有那最後三行。那麼,在什麼情況下,這個IF語句是否有用?
謝謝。
我有一個問題:爲什麼中介函數F,而不是僅僅subClass.prototype =新超();? – 755 2013-02-19 10:00:37