Welcome to the Treehouse Community

The Treehouse Community is a meeting place for developers, designers, and programmers of all backgrounds and skill levels to get support. Collaborate here on code errors or bugs that you need feedback on, or asking for an extra set of eyes on your latest project. Join thousands of Treehouse students and alumni in the community today. (Note: Only Treehouse students can comment or ask questions, but non-students are welcome to browse our conversations.)

Looking to learn something new?

Treehouse offers a seven day free trial for new students. Get access to thousands of hours of content and a supportive community. Start your free trial today.

JavaScript Object-Oriented JavaScript (2015) Constructor Functions and Prototypes Playlist Project

When to use "this" in the function and when to use prototypes

Hi guys I am confused about why this.(property) is used in the function and why other times there is a prototype built for it. Why aren't there just prototypes built for each property? And also to stop the current playing song, currentSong.stop() is used in one prototype and this.stop() is used in the other, why?

2 Answers

Adam Bowers
Adam Bowers
11,812 Points

Hey Kashish,

I wondered this myself for a while too. But actually is pretty logical.

When you use a constructor function to create an object with properties and methods...For example.

var Lamp = function (bulb, state){

this.bulb = bulb;
this.ison = state;
this.pressSwitch = function (){
     If (this.ison){
        this.ison = false;
      }
     else{
           this.ison = true;
      }

};
};

var bedroomLight = new Lamp ('LED' false );

Each time you create a new object it will have its own copy of the Lamp.pressSwitch method.

This is pointless because all lamps perform the same task. So instead of having objects repeat themselves and use memory. You can create a prototype method instead. So every time you call new Lamp the object created Inherits the function rather than having its own copy of the same code.

This is my understanding. Hope it helps.

So how do you know when to use prototypes and when to just assign a property a function in the object? Also, in the video, why is this.stop() used rather than currentSong.stop() in different places of code when they both basically reference the same thing?

Lukas Smith
Lukas Smith
4,026 Points

Try imagine you have a House and You have in THIS house light switch. When you project the HOUSE and write HOUSE include SWITCH LIGHT always when you are in THIS house U can use the THIS.switch You don't need to tell anyone: I AM USING my HOUSE.SWITCH to LIGHT. U can tell I am using THIS.switch because U are in HOUSE. If U are in function U can use this.(property)