我遇到一些麻烦了解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