<a id="test"><span>测试一下</span></a>
<script type="text/javascript">
document.getElementById("test").onclick=function(){
console.log(this);
function fun(){
console.log(this);
}
fun();
}
document.getElementById("test").click();
</script>
如上,为什么打印的第一个是对象,第二个是window,求解释...
哪位点的-1?完全不理解什么心态...
在理解代码之前,我们先运行一段代码:
可以很容易的发现,打印的内容为object window object
为什么会这样呢?这是因为this需要传递过来。
第一次打印,通过点.传递过来,所以打印的是object对象。
第二次打印,因为没有把this传过去,所以找不到对象,这时候this指向window(还记得在函数作用域下因为没有对象所以this指向window吗?这个也是一样的道理,因为找不到对象,所以this指向window)(这种情况下使用严格模式则打印undefined)。
第三次打印,通过自执行函数把this传入,所以打印的也是object对象。