Welcome to the Treehouse Community
Want to collaborate on code errors? Have bugs you need feedback on? Looking for an extra set of eyes on your latest project? Get support with fellow developers, designers, and programmers of all backgrounds and skill levels here with the Treehouse Community! While you're at it, check out some resources Treehouse students have shared here.
Looking to learn something new?
Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and join thousands of Treehouse students and alumni in the community today.
Start your free trialjohn larson
16,594 PointsPlaylist.prototype.play & Song.prototype.play: They are interacting, I'm a little foggy how.
//both Playlist and Song have a .play()
//how does Playlist distinguish which .play() to use?
Playlist.prototype.play = function(){
var currentSong = this.songs[this.nowPlayingIndex];
currentSong.play();
};
Song.prototype.play = function(){
this.isPlaying = true;
};
3 Answers
Steven Parker
231,275 PointsThe method used depends on the thing you use it on.
For example, say you have a Playlist named mylist, and a Song named mysong.
Now if you do this: mylist.play();
— it will use the play method that was defined for the Playlist prototype.
But if you do this: mysong.play();
— it will use the method defined for the Song prototype.
Does that clear it up?
giseletoledo2
3,480 PointsI don't know if this answer your question, but in the example of the dice was like that ( I don't know if the sintaxe it's right):
function Playlist() { this.songs = []; this.nowPlayingIndex = 0; this.currentSong = this.songs[this.nowPlayingIndex]; this.playSong = function() { this.currentSong.play(); }; }
Playlist.prototype.play it's part of Playlist, it's just outside the function.
john larson
16,594 PointsGislel, I took a break from js cause it was starting to make my head hurt. I'll go back to it after I finish Python. Thank you for your response, I'll keep this as reference when I need it :D
function Playlist() {
this.songs = [];
this.nowPlayingIndex = 0;
this.currentSong = this.songs[this.nowPlayingIndex];
this.playSong = function() {
this.currentSong.play();
};
}
giseletoledo2
3,480 PointsOk, it's dificult too learn some things in Javascript.
john larson
16,594 Pointsjohn larson
16,594 PointsI have this vague idea of what you are saying. 1: are you saying it has to do with where it is called? ie: the thing you use it on? I hate to belabor this but, let me ask it this way.
I always appreciate your help. Thanks.