問題
var obj = {
x:3,
doit: function(){ console.log("method is called." + this.x); }
}
obj.doit(); //=> method is called.3
var fn = obj.doit;
fn(); //=> ?
答え
var obj = {
x:3,
doit: function(){ console.log("method is called." + this.x); }
}
obj.doit(); //=> method is called.3
var fn = obj.doit;
fn(); //=> method is called.function (a,b,c){n(a)||v("Expected function but got %s: %s.",[m(a),a],b,Array.prototype.slice.call(arguments,2))}
// [解説]
// obj.doitが参照する関数オブジェクトをグローバル変数fnに代入
// 関数内のthis参照はグローバルオブジェクトを参照する