Upgrade to Pro — share decks privately, control downloads, hide ads and more …

The 'New' Keyword in JavaScript

The 'New' Keyword in JavaScript

Avatar for Chris Bateman

Chris Bateman

April 16, 2014
Tweet

More Decks by Chris Bateman

Other Decks in Programming

Transcript

  1. var simpleObject = { a: 'a' }; { a: 'a'

    } simpleObject.toString(); // um, where does this function come from?
  2. var simpleObject = { a: 'a' }; { a: 'a',

    __proto__: { ... toString: function, hasOwnProperty: function, ... } }
  3. var Demo = function() { this.prop = 'text'; }; Demo.prototype.action

    = function() { alert(this.prop); }; var myDemo = Demo(); myDemo; // undefined myDemo.action() // ERROR window.prop; // 'text'
  4. var Demo = function() { this.prop = 'text'; }; Demo.prototype.action

    = function() { alert(this.prop); }; var myDemo = Demo(); myDemo; // { prop:'a', action:function } window.prop; // undefined myDemo.action(); // alerts "text"
  5. var Demo = function() { this.prop = 'text'; }; Demo.prototype.action

    = function() { alert(this.prop); }; var myDemo = new Demo();
  6. var Demo = function() { this.prop = 'text'; }; Demo.prototype.action

    = function() { alert(this.prop); }; var myDemo = new Demo();
  7. var Demo = function() { this.prop = 'text'; }; Demo.prototype.action

    = function() { alert(this.prop); }; var myDemo = new Demo(); var Demo = { init: function() { this.prop = 'text'; }, action: function() { alert(this.prop); } }; var myDemo = Object.create(Demo); myDemo.init();