这是我的实验脚本:
window.name = 'myWindow';
function sum(num1, num2){
console.log('context name: '+this.name+', caller: '+arguments.callee.caller.name);
}
function callSumNoName(num1, num2){
sum.call(this, num1, num2);
}
function callSum(num1, num2){
this.name = 'fnCallSumm';
sum.call(this, num1, num2);
}
console.log(callSumNoName()); // no property name in the function
console.log(callSum()); // the property name is 'fnCallSumm'
console.log(callSumNoName()); // no property name in the function
我希望函数sum()中的this.name必须是:
myWindow
fnCallSumm
myWindow
...但实际上它们是:
myWindow
fnCallSumm
fnCallSumm
这是什么意思?!为什么第 3 次显示的是上次函数调用者的name属性,而不是现在必须提取的窗口对象的 name 属性?