Javascript继承 - 无法访问方法

时间:2017-02-09 19:52:49

标签: javascript inheritance

我想我可能做的很傻,但我不确定......

我有这两个类:

function Sprite()
{
}

Sprite.prototype.test1 = function()
{
    console.log("test1");
}

function Player()
{
}

Player.prototype.test2 = function()
{
    console.log("test2");
}

Player.prototype = new Sprite();
var player = new Player();

player.test1(); // this works
player.test2(); // this doesn't work..

我很难理解为什么test2()不起作用,但test1()确实有效。如果我向这些类添加属性,那么我可以从它们中访问属性,我只是无法从播放器类调用方法。我做错了什么?

1 个答案:

答案 0 :(得分:1)

执行此操作时:

Player.prototype.test2 = function()
{
     console.log("test2");
}

Player.prototype = new Sprite(); // Original Player.prototype gets overwritten here

首先修改Player.prototype的属性,然后将Player.prototype重新分配给新对象,丢失Player的原始原型。

如果您颠倒这两个陈述的顺序,您的考试将通过。