为什么Google Closure库中的 goog.inherits
看起来像这样:
goog.inherits = function(childCtor, parentCtor) {
function tempCtor() {};
tempCtor.prototype = parentCtor.prototype;
childCtor.superClass_ = parentCtor.prototype;
childCtor.prototype = new tempCtor();
childCtor.prototype.constructor = childCtor;
};
而不是
goog.inherits = function(childCtor, parentCtor) {
childCtor.superClass_ = parentCtor.prototype;
childCtor.prototype = new parentCtor();
childCtor.prototype.constructor = childCtor;
};
tempCtor
有什么好处? 最佳答案
如果parentCtor
具有一些初始化代码,并且在最坏的情况下需要某些参数,则该代码可能会意外失败。这就是为什么他们创建一个虚拟函数并从中继承的原因。