我有一个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班级?
好吧,首先是基础知识:当你编写时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.