Pab*_*dez 8 javascript inheritance prototypal-inheritance
我一直在观看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;
};
Run Code Online (Sandbox Code Playgroud)
他为什么要写Hoozit.prototype = new Gizmo()
而不是Hoozit.prototype = Gizmo.prototype
?
这两者有什么区别吗?
Tri*_*ych 17
原因是使用Hoozit.prototype = Gizmo.prototype
意味着修改Hoozit的原型对象也会修改Gizmo类型的对象,这不是预期的行为.
Hoozit.prototype = new Gizmo()
继承自Gizmo,然后单独离开Gizmo.