这有两段代码,为什么输出的结果不一样?
这有两段代码,为什么输出的结果不一样?第一段:<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> 展开
<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> 展开
展开全部
因为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
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询