<!DOCTYPE html>
<html>
<head>
<title></title>
<script type="text/javascript">
function outer(){
inner();
}
function inner(){
alert(this);
}
outer();
</script>
</head>
<body></body>
</html>
这里的this为什么是指的window对象,inner函数不是被outer函数调用的吗?求解

解决方案 »

  1.   

    《javascript高级程序设计》第三版上对this的解释是this对象引用的是函数执行的环境对象,在这里inner的环境对象不是 outer()的局部环境对象吗?为什么this不是指的outer对象?
      

  2.   

    书上说的“函数执行的环境对象”不是你理解的那个。
    function inner(){
        console.log(this);
        console.log(this.xxx);
    }
    var obj = {};
    obj.xxx = 123;
    obj.f = inner;
    obj.f();//这样调用时函数执行的环境对象是objinner();//而这样调用时,相当于是window.inner(),函数执行的环境对象就是window
      

  3.   

    http://blog.csdn.net/blueblueskyhua/article/details/53954870