オブジェクト指向のJavascriptを学ぶのに少し問題があります。とという2つのクラスがCosmos
ありBackground
、Cosmos
次のようになります。
// js/Cosmos.js
function Cosmos() {
this.background = new Background();
// Fire game loop
this.ticker = setInterval(this.tick, 1000 / 60);
}
// Main game loop
Cosmos.prototype.tick = function() {
console.log(this.background);
}
メインのゲームループがカチカチ音をたてるとき、私undefined
はコンソールに入ります。this.background
はクラスのプロパティであるため、これはよくわかりません。クラスでCosmos
定義されているメソッドからアクセスできるはずです。Cosmos
index.html
ページのスクリプトタグに戻って、次のように変更すると、次のようになります。
// Lift off
var cosmos = new Cosmos();
console.log(cosmos.background);
それは機能し、Background
オブジェクトはコンソールに記録されます。Cosmos
誰かが説明を提供し、内部からのプロパティにアクセスする方法を教えてもらえますCosmos.tick
か?
編集:問題は、と関係があることがわかりました。setInterval()
これを行うと、適切なオブジェクトがコンソールに記録されるためです。
function Cosmos() {
this.background = new Background();
// Fire game loop
//this.ticker = setInterval(this.tick, 1000 / 60);
this.tick();
}
// Main game loop
Cosmos.prototype.tick = function() {
console.log(this.background);
}
しかし、それを回避する最善の方法はまだわかりません。