J'ai un problème 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;
}
}
donne l'erreur suivante:
TypeError: album is not a constructor
Je ne trouve pas le problème. J'ai lu beaucoup d'autres articles, mais je n'ai pas trouvé de problème similaire. Se pourrait-il qu'il ne soit pas autorisé de créer un objet dans un autre objet? Comment puis-je résoudre ce problème?
Cette ligne
var album = new album(albumName);
masque la fonction externe album
. Donc oui, album
n'est pas un constructeur à l'intérieur de la fonction. Pour être plus précis, c'est undefined
à ce stade.
Pour éviter ce genre de problème, je vous suggère de nommer vos "classes" en commençant par une majuscule:
function Album(name) {
Plus généralement, je suggère de suivre le guide de style Google en cas de doute.