JS execution context - Object

by Himanshu Joshi

JavaScript

drink = 'wine';

var foo = {};

foo.drink = "beer";

foo.getDrink = function() {
  return this.drink; // 'this' refers to the object "foo"
};

foo.under21 = {};

foo.under21.drink = 'soda';

foo.under21.getDrink = function() {
  return foo.getDrink.call(); // execute foo.getDrink()                
};

/*
	this will print soda - perfect example of context changing as we have passed "foo.under21" and getDrink will now execute in its context.
foo.under21.getDrink = function(){
  return foo.getDrink.call(foo.under21); // execute foo.getDrink()                
};*/

console.log(foo.getDrink()); // beer

console.log(foo.under21.getDrink()); // wine