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 trialAnthony Kelly
15,649 PointsCan a class only have one constructor?
Instantiating the class here seems to pass arguments immediately to a constructor function nested inside of it. If a class had multiple constructors, what would calling them look like? Or are classes themselves limited to one constructor?
5 Answers
Steven Parker
231,268 PointsAccording to MDN (my favorite go-to resource):
Having more than one occurrence of a constructor method in a class will throw a SyntaxError error..
So yes, a class can only have one constructor.
Franklin Rony Cortez Barrera
3,065 PointsBut, what happend when I have a constructor with parameters and the default constructor,without parameters.?
Steven Parker
231,268 PointsYou might be thinking of another language (like C#, which supports method overloading). but In JavaScript, you have only one constructor. If it takes parameters, then to be able to create an instance without arguments you must supply default values for them. For example:
constructor(name = "unknown", age = 0) {
hector alvarado
15,796 PointsI think that in every lenguaje classes only have one constructor. When we instanciate the object there would be needed tho choose how to instanciate, and thats kinda useless, if two objects are really similar then might just make a class to cover them both.
Steven Parker
231,268 PointsI mentioned C# specifically because you can have several constructors in a class, as long as they each have a different signature (number and type of arguments).
Tobiasz Gala
Full Stack JavaScript Techdegree Student 23,529 PointsJavaScript does not support constructor overloading. You can set default values if you don't need all options.
Francisco Ortiz
2,673 PointsAhh, that's good to know! How do you set default values in side the constructor?
Steven Parker
231,268 PointsThere's an example in the comment I left for Franklin on Oct 23.
Franklin Rony Cortez Barrera
3,065 Pointsoh thank you for clarify sir.
Kevin Gates
15,053 PointsKevin Gates
15,053 PointsAnthony Kelly -- this should be marked as the Best Answer as Steven gave you the answer and linked to a resource for further study. :)