javascript binding. unexpected behavior

by lid0

JavaScript

var base_function = function (){ return this.id }

var obj1 = {id:"Apple"};
var obj2 = {id:"Orange"};

console.log("func1 = base_function binded to obj1");
var func1 = base_function.bind(obj1);
console.log("func1 = base_function binded to obj2");
var func2 = base_function.bind(obj2);

console.log("func3 = func2 binded to obj1 func2.bind(obj1) ");
var func3 = func2.bind(obj1); 


console.log("obj1",obj1);
console.log("obj2",obj2);

console.log("func1()",func1());
console.log("func2()",func2());
console.log("func3()",func3());

console.log("notice that func3() did not bind to obj1 and returned the original binding of func2");