Edit in JSFiddle

/* 1. What sence of "var" here? */
name = 'John';
var myObject = ({
    name: "Ted",
    baz: function Bob(n) {
        console.log(n + ".1. this.name is " + this.name);
        console.log(n + ".2. self.name is " + self.name);
        (function Cris() {
            console.log(n + ".3. this.name is " + this.name);
            console.log(n + ".4. self.name is " + self.name);
        }());

    }
});
var myBazz = myObject.baz;

/* 2. What You should get, in which order and why? */
var to = setTimeout(myObject.baz, 100, 1);
myObject.baz(2);
myBazz(3);