function oDemo1(num1,num2)
                {
                 return num1+num2;
                }
                
                function oDemo2(num1,num2)
                {
                 return oDemo1.apply(this,arguments); //this指向谁
                }
                alert(oDemo2(5,6)); //显示11
是指向oDemo2还是window,
如果是指向window,
请问为什么指向window?我觉得是oDemo2调用的oDemo1,这个this应该指向oDemo2啊

解决方案 »

  1.   

    function oDemo1(num1, num2) {
        return num1 + num2;
    }function oDemo2(num1, num2) {
        return oDemo1.apply(window, arguments); //改成任何一个对象 对你的结果都没有影响,因为没有“实例化” this始终是window
    }
    alert(oDemo2(5, 6)); //显示11
    不是指向谁 而是 你执行了oDemo1(输出11) 并且“改变”this 指向当前的this(其实就是window)
      

  2.   

    window.color='red';
    function oDemo()
    {
      return this.color;    //不管这个color有没有值,都要让这个this指向oDemo
    }
    alert(oDemo());
    这个this的指向真混乱,
    没有办法强制让他指向谁么?
      

  3.   

    window.color='red';
    function oDemo()
    {
    this.color = "123"
      alert( this.color);    //不管这个color有没有值,都要让这个this指向oDemo
    }
    new oDemo()