JavaScript 中 this


Photo by  David Marcu on  Unsplash

this 所指向的对象与运行时上下文进行绑定,这就会导致在不同的场景下,函数的最终运行结果不一样。但是这种灵活的构造给了函数更多的复用机会。但是 this 所指向的上下文或者说是对象,是在函数调用的时候决定的。但是也无外两个场景—— 在对象外和在对象中。

在对象外

在 Node.js 环境下 this 默认指向的是 module.exports。在浏览器环境的话,指向 window。

在对象中

在这种场景下,this 存在于一个对象的函数中。要分清 this 的作用域,只需看 Object.method 中 Object 是什么。

字典对象


假如它是一个简单的字典对象,那么 this 指向的是这个字典对象本身。 在这个例子中,调用 Person.getName() 时,this 指向的是 Person 这个对象。

function 对象

假设我们通过 function 的方式,利用原型链构造一个类,然后通过对象的实例调用方法。那么,此时 this 指向的是该类的一个实例。

复用原型方法

承接上面的例子,若直接调用原型上的方法,this 指向的Person.prototype 这个原型。所以假如想将此方法利用到其他对象,必须使用 bind、call、apply 将其绑定到要作用的对象。

参考链接

Meaning of “this” in node.js modules and functions

How does the “this” keyword work?

JavaScript 的 this 原理

What is “this”?

Object methods, “this”

0
0

所有评论 0