这有两段代码,为什么输出的结果不一样?

这有两段代码,为什么输出的结果不一样?第一段:<scripttype="text/javascript">varobj={name:"sharpxiajun",job:"... 这有两段代码,为什么输出的结果不一样?第一段:
<script type="text/javascript">
var obj = {
name:"sharpxiajun",
job:"Software",
show:function(){
console.log(this);
//输出 Object { name="sharpxiajun", job="Software", show=function()} }
};
</script>

第二段:
<script type="text/javascript">
var name = "I am window";
var obj =
{
name:"sharpxiajun",
job:"Software",

ftn02:function(ftn)
{
ftn();
}
};

obj.ftn02(function(){
console.log(this.name);//输出I am Window
console.log(this);//输出Window
});

</script>
展开
 我来答
s524797336
2016-10-19 · TA获得超过180个赞
知道小有建树答主
回答量:126
采纳率:100%
帮助的人:186万
展开全部

因为this的作用域不同啊

首先你肯定知道

function a(){
    console.log(this);//默认指向window
}

那么你第二段代码可以等价于

<script type="text/javascript">
var name = "I am window";
var obj =
 {
    name:"sharpxiajun",
    job:"Software",
    
    ftn02:function(ftn)
   {
        console.log(this);//这个this的作用域是对象本身
        ftn();//这个方法中的this则是输入时的作用域
    }
  };
  
  function a(){
   console.log(this.name);//输出I am Window
   console.log(this);//输出Window
}

obj.ftn02(a);

</script>

只是在ftn02方法中执行了传进去的方法,此时this的作用域依然是window

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式