そのため、内部に関数と変数を含む疑似クラスがあります。例えば:
function MyClass()
{
this.a = 0;
this.b = function(c)
{
this.a += c;
}
}
次に、後で使用するときは、次のようにします。
var myObject = new MyClass();
myObject.b(3);
myObject.b(5);
しかし、私がこれを行うと:
console.log("A: " + myObject.a);
私は得る:
A: 0
私は何を間違っていますか?
これが私の実際のコードです。複数のファイルに分割されていますが、関連するものを掲載します。
function SongDatabase() {
this.songs = new Array();
this.loadSongs = function () {
};
this.saveSongs = function () {
};
var _Constructor_ = function () {
var mySong = new Song();
this.songs = new Array(mySong);
};
_Constructor_();
}
function LyriX() {
var songDatabase = new SongDatabase();
//var playlistDatabase = new PlaylistDatabase();
songDatabase.loadSongs();
var sourceList = new ScrollableList();
sourceList.setElement($S.getElement("sourceList"));
var accessoryList = new ScrollableList();
accessoryList.setElement($S.getElement("accessoryList"));
var sourceListClick = function (index) {
$S.log("source click: " + index);
if (index == 0) {
displaySongs();
}
};
sourceList.setClickListener(sourceListClick);
var displaySongs = function () {
$S.log("display songs");
// STACK OVERFLOW LOOK HERE!!! thanks :)
// in debug in chrome songDatabase.songs is a zero length array
accessoryList.loadArray(songDatabase.songs);
};
}
$S.addOnLoadListener(function () {
new LyriX();
});