关于this的问题

Image

问题如图,我在想是不是因为严格模式的问题?还是?

阅读 2.8k
4 个回答

clipboard.png

可以看到,你返回的是一个function,他已经没有了上下文。this是用来指代当前对象的,没有当前对象时,非严格模式是window。在严格模式中this不会指向window是undefined。

调用hello的时候不用new吗?
Hello.hello是个function对象,你要想用this指向hello对象必须用new来声明一个对象实例,或者用call方法

你的这种情况类似于

var a = {func:function(){console.log(this)}};
var b = a.fuc;

函数直接赋值是没有this绑定的,在浏览器环境下指向window,严格模式下this是禁止指向全局变量的,因此你拿到的是undefined

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