this

函数调用的几个场景:
function foo() { console.log(this.a) } var a = 1 foo() const obj = { a: 2, foo: foo } obj.foo() const c = new foo()
对于直接调用foo(),不管foo()函数放在什么地方,this一定是windows。
对于obj.foo(),谁调用foo(),谁就是this。
对于new方式来说,新建的this被永远的绑在c上,不会被任何方式改变。
!注:es6的箭头函数没有this,super,arguments等等,这些都要依赖包含箭头函数最近的函数。另外,箭头函数使用bind这类函数是无效的。
当出现以上情况一起出现的时候,就需要根据优先级来判断this的指向了,首先new的优先级最高,其次是bind函数,然后是obj.foo()调用,最后才是直接调用foo()

posted @ 2022-02-11 14:31  大坏坏狼  阅读(118)  评论(0)    收藏  举报