我一直在观看Douglas Crockford在YUI剧院的演讲,我有一个关于JavaScript继承的问题......
Douglas给出了这个例子,表明"Hoozit"继承自"Gizmo":
function Hoozit(id) { this.id = id; } Hoozit.prototype = new Gizmo(); Hoozit.prototype.test = function (id) { return this.id === id; };
他为什么要写Hoozit.prototype = new Gizmo()
而不是Hoozit.prototype = Gizmo.prototype
?
这两者有什么区别吗?
原因是使用Hoozit.prototype = Gizmo.prototype
意味着修改Hoozit的原型对象也会修改Gizmo类型的对象,这不是预期的行为.
Hoozit.prototype = new Gizmo()
继承自Gizmo,然后单独离开Gizmo.