JavaScript function binding (this keyword) is lost after assignment
- by Ding
this is one of most mystery feature in JavaScript, after assigning the object method to other variable, the binding (this keyword) is lost
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 
my question is:
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?
2) since fx is a global method, the scope chain contains only global object. what is the value of this property in Variable object?