首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >‘`this`’指的是什么?

‘`this`’指的是什么?
EN

Stack Overflow用户
提问于 2011-03-01 18:37:05
回答 4查看 354关注 0票数 6

我有一个JavaScript类:

代码语言:javascript
复制
function Person(n){
  // ...
}

在类的外部,我有以下代码:

代码语言:javascript
复制
Person.prototype.shower = function(){ this.dirtFactor=2 }

上面代码中的this指的是什么?它是指prototype,还是指Person类?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-03-01 18:48:49

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

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

代码语言:javascript
复制
var mellon = new Person('Mellon');

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

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

因此,如果你这样写:

代码语言:javascript
复制
Person.prototype.shower = function(){ this.dirtFactor=2 }  

然后mellon.shower()方法就可用了。

我建议通过Mozilla's intro to OOP in Javascript获取有关此主题的一些详细信息。

因此,回答您的问题:this指的是调用shower方法所使用的对象。在上面的例子中,它应该是mellon

票数 1
EN

Stack Overflow用户

发布于 2011-03-01 18:40:27

this的含义取决于您如何调用函数,而不是您如何定义它。

假设你做了一些类似的事情:

代码语言:javascript
复制
var bob = new Person('whatever n is');
bob.shower();

this将为bob (这将是Person的一个实例)。

票数 4
EN

Stack Overflow用户

发布于 2011-03-01 18:39:01

它是指person的实例

所以当你做一个

var Mike = new Person();

然后这是迈克

示例

代码语言:javascript
复制
<input type="text" id="field" value="Bla" />
<script>
document.getElementById('field').onfocus=function() { 
  alert(this.value)
}
</script>

将警告该函数所分配到的字段的值

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5153332

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档