call() メソッドの仕組みを理解しようとしています。Firebug Javascript コンソールで実行した次のコード スニペットがあります。
コード:
var window = {num1: 10, num2: 20};
var o = {num1: 20, num2: 30};
var sum = function(num1, num2) {
return this.num1 + this.num2;
};
console.log(sum.call(o)); // 50
console.log(sum.call(window)); // 30
console.log(sum.call(this)); // 30
出力:
50
NaN
NaN
出力はそれぞれ 50 と 30 になると予想していました。window/this オブジェクトが実行コンテキストとして渡されると、call() が NaN を返すのはなぜですか?