关于this的一些疑惑

function test(){
    alert(this);
}
test();

图片描述

this为何指向的是window,在函数体内不应该指向的是Functon么?

阅读 3.3k
5 个回答

函数定义并不涉及this的指向,由js函数提升,会看出,此时并不在意函数内执行什么操作。
只有函数执行,才会改变this,只要不涉及函数执行,this一律指向window(当然严格模式下指向undefined)。
这段函数执行时,没有明确的写是哪个对象调用改函数,其实与window.test()是等价的。
函数执行,this具体怎么指向,call,apply方法会改变this指向,找篇文章好好深入理解下吧^_^

this指向它的调用者,test()相当于window.test();建议用console.log(this),别用alert,alert你是看不完整的this结构的,自然就没法分析。

执行环境里的this

说的太多是越说越不能理解,

test();这样执行严格来讲是window.test();这个意思,只是全局变量和全局方法可以省略window,既然test()是被window调用,你说this不指向window,还能指向谁?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题