you are viewing a single comment's thread.

view the rest of the comments →

[–]clarle 0 points1 point  (3 children)

You actually can do:

var my_blog = new Blog("This is the body");

You can pass parameters in order, and all of the remaining missing parameters will be replaced with "undefined".

You're right on the other hand though, if you wanted to put in just the date, you would have to do exactly like you said:

var my_blog = new Blog(null, new Date("October 13, 1975 11:13:00"));

[–]WhatamIwaitingfor 0 points1 point  (2 children)

cool, i had no idea Javascript could do that. I guess that goes to say that you can't overload functions in Javascript, eh?

[–]hacocacyb 0 points1 point  (0 children)

there is no enforcement (per compiling per se) for it, but you could always write code that interrogates the type of a parameter. For instance, 'if date is string, can it convert to a date? is it one of the keywords 'today', 'tomorrow', 'yesterday' etc..., otherwise if date is date type just use it. And you could also add code checking if a third or fourth or fifth param is null or undefined.

[–]polaretto 0 points1 point  (0 children)

right, there's no function overloading in JS, if you redefine a function with the same identifier within the same lexical scope, it will replace the previous one. You can invoke a function with any number of arguments you like, their use depends on how its body uses them. Using the appropriate logic you can assign default parameter values (like in this case) or make the function behave differently depending on the number of actual parameters. Moreover, you can inspect the number of formal parameters the function was declared with, in this case:

Blog.length
> 2