JavaScript function binding (this keyword) is lost after assignment
<p>this is one of most mystery feature in JavaScript, after assigning the object method to other variable, the binding (this keyword) is lost</p>

<pre><code>var john = {
  name: 'John',
  greet: function(person) {
    alert("Hi " + person + ", my name is " + this.name);
  }
};

john.greet("Mark"); // Hi Mark, my name is John

var fx = john.greet;  
fx("Mark"); // Hi Mark, my name is 
</code></pre>

<p>my question is:</p>

<p>1) what is happening behind the assignment? var fx = john.greet;
   is this copy by value or copy by reference?
   fx and john.greet point to two diferent function, right?</p>

<p>2) since fx is a global method, the scope chain contains only global object. what is the value of <strong><em>this</em></strong> property in Variable object? </p>
