Skip to content

Instantly share code, notes, and snippets.

@lawrencejones
Created April 26, 2014 14:45
Show Gist options
  • Save lawrencejones/11321940 to your computer and use it in GitHub Desktop.
Save lawrencejones/11321940 to your computer and use it in GitHub Desktop.
var Track = (function() {
function Track(title, artist) {
this.title = title || 'Untitled';
this.artist = artist || 'Unknown';
}
Track.prototype.toString = function() {
return this.title + ',\t\t' + this.artist;
};
return Track;
}());
var MusicLibrary = (function() {
function MusicLibrary() {
var tracks = [];
this.getTracks = function() {
return tracks;
};
}
MusicLibrary.prototype.addTrack = function(track) {
if (track instanceof Track) {
return this.getTracks().push(track);
}
};
MusicLibrary.prototype.iterate = function(callback) {
if (!callback || typeof callback !== 'function') {
return;
}
return this.getTracks().map(callback);
};
MusicLibrary.prototype.print = function() {
this.iterate(function(track) {
console.log(track.toString());
});
};
return MusicLibrary;
}());
/* Testing internal iterator */
var lib = new MusicLibrary();
lib.addTrack(new Track('Ocean', 'John Butler'));
lib.addTrack(new Track('MS', 'Alt-J'));
lib.addTrack(new Track('Nuvole Bianche', 'Einaudi'));
lib.addTrack(new Track('Grown Woman', 'Beyonce'));
console.log('Printing...');
lib.print();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment