在JavaScript中,特殊变量 this 相对来说较为复杂,因为它不仅仅只在面向对象设定中出现,其随处可见。这里会解释一下 this 的工作原理以及会引起问题的地方,最佳实践总结。
理解 this,最好的方式是区分被使用的三种类型的位置:
函数内部:this 是一个额外的隐式的参数。
函数外(顶层作用域):this 在浏览器中指向全局对象,Node.js中指向一个模块的暴露接口。
在传递给 eval() 的字符串中:eval() 也许会取得当前 this 的值,或者是将其设置为全局对象,取决于是直接或者间接的调用。
来看一下各个类型。
1. 在函数内部的 this
这是 this 一种最常用的方式,因为在 JavaScript 中,函数以三种不同的角色代表了所有的可调用的结构形式。
确切的函数(this 在松散模式中为全局对象,在严格模式中为 undefined )
构造函数(this 指向新创建的实例)
方法(this 指向方法调用的接受者)
在函数中,this 被常常认为是一个额外的隐式的参数。
1.1 在确切的函数中的 this
在确切的函数中,this 的值依赖于其所在的模式:
转载于:https://blog.51cto.com/mingkrcom/1532689