gavinhewitt
1/10/2013 - 5:46 PM

module-es2015.js

var Application = (function(w, d){
  var myPrivateVariable = "My private content";
  
  var _private = {
    cache: function(){ 
      this.link = d.querySelector('.link-item');
    }
    
    bind: function(){ 
      this.link.addEventListener('click', this.handleClick, false);
    },
    
    handleClick: function(){
      console.log(myPrivateVariable);
    }
  };
  
  return {
    init: function(){
      console.log(myPrivateVariable);
      
      _private.cache();
      _private.bind();
    }
  };
})(window, document);

Application.init(); //init the app
console.log(myPrivateVariable); // undefined
const Application = (() => {
  const privateVariable = 'Private content'
  const link = document.querySelector('.link')
  
  const _private = {
    cache: () => this.link = document.querySelector('.link'),
    bind:  () => this.link.addEventListener('click', this.showContent, false),
    showContent: () => console.log(privateVariable)
  }
    
  return {
    init: () => {
      _private.showContent()
      _private.cache()
      _private.bind()
    }
  }
})()

Application.init() //
console.log(privateVariable) //undefined