これが私の実験的なスクリプトです:
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 プロパティが表示されるのはなぜですか?