title: setTimeout callback argument
body: <p>Let's consider this piece of JavaScript:</p>
  
  <pre><code>function Person(name) {
      this.name = name;
  }
  
  Person.prototype.showName = function() {
      alert(this.name);
  }
  
  
  var mike = new Person("mike");
  //mike.showName();  
  
  window.name = "window"; 
  </code></pre>
  
  <p>I don't understand the difference between the behavior of </p>
  
  <pre><code>setTimeout(mike.showName(), 5000);
  </code></pre>
  
  <p>and</p>
  
  <pre><code>setTimeout(function(){
      mike.showName();
  }, 5000);
  </code></pre>
  
  <p>Why is the behavior different? It really confuses me. Thanks.</p>