我有一个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
我找不到问题所在。我读了很多其他的帖子,但我找不到类似的问题。会不会是不允许在另一个对象中创建对象?我该如何解决这个问题呢?
发布于 2013-02-22 01:40:29
这一行
var album = new album(albumName);
隐藏外部album
函数。所以,是的,album
不是函数内部的构造函数。更准确地说,在这一点上它是undefined
。
为了避免这种问题,我建议以大写开头命名您的“类”:
function Album(name) {
更一般的情况下,我会建议在有疑问的时候关注the Google style guide。
https://stackoverflow.com/questions/15008793
复制相似问题