2017-02-09 11 views
0

にアクセスすることはできません...Javascriptの継承は - 私はおそらく愚かな何かをやっていると思うが、私はわからない方法

私はこの2つのクラスがあります。

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()はうまくいきます。これらのクラスにプロパティを追加すると、その両方からプロパティにアクセスできます。メソッドをPlayerクラスから呼び出すことはできません。私は間違って何をしていますか?あなたがこれを行う場合は

+0

オブジェクト全体を 'Player.prototype'に代入すると' Player.prototype.test2'を上書きします。 'test2'を後で定義した場合、代わりに新しいオブジェクトにメソッドが作成され、両方とも動作します。 – dandavis

答えて

1

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

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

を最初Player.prototypeのプロパティを変更し、あなたはPlayerの元のプロトタイプを失って、新しいオブジェクトにPlayer.prototypeを再割り当てします。

これらの2つのステートメントの順序を逆にすると、テストは合格になります。

関連する問題