我有一个JavaScript类:
function Person(n){
// ...
}在类的外部,我有以下代码:
Person.prototype.shower = function(){ this.dirtFactor=2 }上面代码中的this指的是什么?它是指prototype,还是指Person类?
发布于 2011-03-01 18:48:49
好的,首先是基础知识:当你编写function Person(o) { ... }时,你是在而不是声明一个类-- JavaScript不是基于类的,而是基于对象的。这条语句只是声明了一个函数(顺便说一下,它也是对象)。
接下来,当您创建一个这样的对象时:
var mellon = new Person('Mellon');您正在创建一个对象,它的构造函数(某种)是Person。
现在,请仔细阅读:由于mellon的构造函数是Person,因此Person的prototype中的所有方法都将在该对象中可用。
因此,如果你这样写:
Person.prototype.shower = function(){ this.dirtFactor=2 } 然后mellon.shower()方法就可用了。
我建议通过Mozilla's intro to OOP in Javascript获取有关此主题的一些详细信息。
因此,回答您的问题:this指的是调用shower方法所使用的对象。在上面的例子中,它应该是mellon。
发布于 2011-03-01 18:40:27
this的含义取决于您如何调用函数,而不是您如何定义它。
假设你做了一些类似的事情:
var bob = new Person('whatever n is');
bob.shower();则this将为bob (这将是Person的一个实例)。
发布于 2011-03-01 18:39:01
它是指person的实例
所以当你做一个
var Mike = new Person();
然后这是迈克
示例
<input type="text" id="field" value="Bla" />
<script>
document.getElementById('field').onfocus=function() {
alert(this.value)
}
</script>将警告该函数所分配到的字段的值
https://stackoverflow.com/questions/5153332
复制相似问题