search

Home  >  Q&A  >  body text

javascript - 关于this的问题,this指代的是window还是callsum对象?

function sum(num1,num2) {
return num1+num2;
}
function callsum(num1,num2) {
return sum.apply(this,arguments)
}
alert(callsum(1,2)); //3

callsum内部的sum.apply(this,arguments)中this指代的是什么?我知道单单在全局执行sum.apply(this,arguments),this代表window,但到了函数里面this是什么呢?

黄舟黄舟2828 days ago327

reply all(5)I'll reply

  • 大家讲道理

    大家讲道理2017-04-10 15:17:42

    在这个例子里 this 依然是 window,因为调用 callsum() 的时候没有上下文(context)(更正一下:上下文是 window)。如果是:

    var a = {};
    a.fun = callsum;
    a.fun();
    

    这时候 callsum 里的 this 指向 a

    reply
    0
  • 天蓬老师

    天蓬老师2017-04-10 15:17:42

    大家遗漏了一点,在es5严格模式下,函数中的this 是undefined

    reply
    0
  • 巴扎黑

    巴扎黑2017-04-10 15:17:42

    this为调用所在函数的对象,如果这个对象为null/undefined,那么指向window全局对象

    reply
    0
  • 迷茫

    迷茫2017-04-10 15:17:42

    window.alert(callsum(1,2));

    reply
    0
  • PHP中文网

    PHP中文网2017-04-10 15:17:42

    参考:
    Function context 函数上下文

    reply
    0
  • Cancelreply