TypeErrorの問題があります:
function artist(name) {
this.name = name;
this.albums = new Array();
this.addAlbum = function(albumName) {
for (var i = 0; i < this.albums.length; i++) {
if (this.albums[i].name == albumName) {
return this.albums[i];
}
}
var album = new album(albumName);
this.albums.Push(album);
return album;
}
}
function album(name) {
this.name = name;
this.songs = new Array();
this.picture = null;
this.addSong = function(songName, track) {
var newSong = new songName(songName, track);
this.songs.Push(newSong);
return newSong;
}
}
次のエラーが発生します。
TypeError: album is not a constructor
問題が見つかりません。私は他の多くの記事を読みましたが、同様の問題を見つけることができませんでした。別のオブジェクトにオブジェクトを作成することが許可されていない可能性がありますか?この問題を解決するにはどうすればよいですか?
この行
var album = new album(albumName);
外部album
関数をシャドウします。そのため、album
は関数内のコンストラクターではありません。より正確には、この時点ではundefined
です。
この種の問題を回避するには、大文字で始まる「クラス」の名前を付けることをお勧めします。
function Album(name) {
より一般的には、疑問がある場合は Googleスタイルガイド に従うことをお勧めします。