JavaScript: Constructor Auto-Execution with new Keyword

By  on  

JavaScript is full of small, interesting facets that can trip you up, make you laugh, or make you cry.  This post is about an interesting one.  Those of you that have worked with JavaScript functions, and in a way JavaScript "classes" (as you used with MooTools), you're well acquainted with the new keyword.  With the new keyword you get the ability to pass arguments with the function call, but did you know that if you have no arguments, you don't need the parens at all?

function MyClass() {
	console.log('Initialized!');

	//Set a property, as an example
	this.dirty = true;
}

var instance = new MyClass;

// >> "Initialized!''

So why am I telling you this?  I have no idea.  It's just one of those fun tidbits that you can add to your brain. :)

Recent Features

  • By
    How I Stopped WordPress Comment Spam

    I love almost every part of being a tech blogger:  learning, preaching, bantering, researching.  The one part about blogging that I absolutely loathe:  dealing with SPAM comments.  For the past two years, my blog has registered 8,000+ SPAM comments per day.  PER DAY.  Bloating my database...

  • By
    Vibration API

    Many of the new APIs provided to us by browser vendors are more targeted toward the mobile user than the desktop user.  One of those simple APIs the Vibration API.  The Vibration API allows developers to direct the device, using JavaScript, to vibrate in...

Incredible Demos

  • By
    Input Incrementer and Decrementer with MooTools

    Chris Coyier's CSS-Tricks blog is everything mine isn't. Chris' blog is rock star popular, mine is not. Chris prefers jQuery, I prefer MooTools. Chris does posts with practical solutions, I do posts about stupid video-game like effects. If I...

  • By
    Redacted Font

    Back when I created client websites, one of the many things that frustrated me was the initial design handoff.  It would always go like this: Work hard to incorporate client's ideas, dream up awesome design. Create said design, using Lorem Ipsum text Send initial design concept to the client...

Discussion

  1. Amazing how the obvious is sometimes hidden in plain sight. I was going to save the extra () characters but it looks like there’s a micro performance hit in V8.

    http://jsperf.com/new-with-and-without-parens

    • MaxArt

      Really? That’s ironic, since Google Closure Compiler actually removes the parentheses when they can be omitted.

  2. Kostas Loupasakis

    That was something I always was curious about but never bothered to ask/look up. I assume the same thing also occurs in php?

  3. Asmor

    I’ll file this next to optional semi-colons and optional closing tags in HTML5: things that are interesting to know, but if I ever see while reviewing someone’s code I might get stabby.

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!