JavaScript和我相信所有其他OO语言都有一个特殊的关键字this
,您可以在方法中使用它来引用当前对象。例如,假设您有一个名为validate的函数,它在给定对象以及高值和低值的情况下验证对象的value属性
function validate(obj, lowval, hival) {
if ((obj.value < lowval) || (obj.value > hival))
alert("Invalid Value!");
}
然后,您可以在每个表单元素的onchange事件处理程序中调用validate,使用它来传递元素,如下例所示:
<input type="text" name="age" size="3"
onChange="validate(this, 18, 99)">
通常,this
指的是方法中的调用对象
我了解所有this
用法,我只是有一个小问题:this
如何在幕后工作?我的意思是如果你不指定名称,该方法如何知道哪个对象正在调用?
答案 0 :(得分:2)
在我使用的编译器中,这是通过在调用堆栈上传递隐式参数以及显式参数来完成的。当然,它可能会因编译或解释引擎而异,但这是最简单的方法。