置信很多人在初学 JavaScript 的时候都对 this 的指向问题感觉到比拟蛊惑。它不像 PHP,Java 语言中的 this 有很明确的指向,也不会让人容易搞混。
在 JavaScript 中 this 就是函数调用的上下文,在 JavaScript 中有四种函数调用:
- 函数调用,例如 alert(‘hello world’)
- 办法调用,例如 console.log(‘hello world’)
- 结构函数调用,例如 new RegExp(‘\d’)
- 间接调用,例如 alert.call(undefined,’hello world’)
每种调用形式都定义了本人的上下文,所以 this 的体现也是不尽相同的。
另外,strict mode
严格模式也会影响可执行上下文。
了解 this 的关键在于,对于函数执行以及它是如何来影响上下文的有一个清晰的视角。
请相熟一下几个概念:
- 函数调用指的就是执行形成函数体的代码,说白了,就是间接调用一个函数,比方调用
parseInt
函数,调用的形式就是parseInt('15')
,一个普普通通的调用,简单明了,没有任何副作用。 - 执行上下文,就是函数体内
this
的值。 - 函数的作用域就是函数体内可能拜访到的变量和函数。