Edit in JSFiddle

var myObject = {
  foo: "myObject",
  func: function() {
    var self = this;
    console.log("outer func:  this.foo = " + this.foo); // myObject
    console.log("outer func:  self.foo = " + self.foo); // myObject
    var myIFFE = (function() {
      this.foo = "IFFE";
      console.log(this);
      console.log("IFFE func:  foo = " + foo); // IIFE
      console.log("IFFE func:  this.foo = " + this.foo);
      console.log("IFFE func:  self.foo = " + self.foo); // myObject
    })();
  }
};
var foo = "Global";
myObject.func();

function pollute() {
  console.log("Pollution sucks " + foo);
  console.log("Pollution this.foo: " + this.foo);
}
pollute();