"this"是指什么?

Mel*_*lon 6 javascript

我有一个JavaScript类:

function Person(n){
  // ...
}
Run Code Online (Sandbox Code Playgroud)

在课外,我有以下代码:

Person.prototype.shower = function(){ this.dirtFactor=2 }
Run Code Online (Sandbox Code Playgroud)

是什么this在上面的代码是指什么?它是指prototype,还是给Person班级?

jrh*_*ath 1

好吧,首先是基础知识:当你编写时function Person(o) { ... },你并不是在声明一个类——JavaScript 不是基于类的,而是基于对象的。该语句只是声明一个函数(顺便说一下,它也是对象)。

接下来,当您创建这样的对象时:

var mellon = new Person('Mellon');
Run Code Online (Sandbox Code Playgroud)

您正在创建一个对象,其构造函数(某种)是Person.

现在,请仔细阅读:由于mellon的构造函数是Person,因此Persons中的所有方法都prototype将在该对象中可用。

所以如果你写:

Person.prototype.shower = function(){ this.dirtFactor=2 }  
Run Code Online (Sandbox Code Playgroud)

那么该方法mellon.shower()就可用了。

我建议阅读Mozilla 的 Javascript 中的 OOP 简介,了解有关此主题的一些详细信息。


因此,回答您的问题:指的是调用this该方法的对象。shower在上述情况下,它将是mellon.