JavaScript中的原型继承

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.