如何在javascript中继承类?
函数不工作,它没有在“输入”中输入值 身体如何在javascript中继承类?,javascript,jquery,Javascript,Jquery,函数不工作,它没有在“输入”中输入值 身体 <input type="text" class="test"/> <input type="text" class="test1"/> <script type="text/javascript"> var test= new example('test') var test1= new example('test1') test.validate() test1.validate(
<input type="text" class="test"/>
<input type="text" class="test1"/>
<script type="text/javascript">
var test= new example('test')
var test1= new example('test1')
test.validate()
test1.validate()
</script>
var test=新示例(“test”)
var test1=新示例('test1')
test.validate()
test1.validate()
您的keyup事件处理程序将具有不同的“this”。您可以使用bind来更正该问题
keyup(function (e){
if(e.keyCode==13) this.code();
}.bind(this))
当您绑定到一个事件时,会调用处理程序,并将“this”关键字设置为触发该事件的对象,而不是创建该事件的对象。您的keyup事件处理程序将具有不同的“this”。您可以使用bind来更正该问题
keyup(function (e){
if(e.keyCode==13) this.code();
}.bind(this))
当您绑定到一个事件时,会调用处理程序,并将“this”关键字设置为触发事件的对象,而不是创建事件的对象。说到这一点,javascript有点难以理解 本文对此进行了一些解释 但解决这个问题的一个办法是
function example(id){
this.code= function(){$('.'+id).val(id)}
var self = this;
this.validate= function (){
$('.'+id).keyup(function (e){
if(e.keyCode==13) self.code();
});
}
}
说到这个,javascript有点难理解 本文对此进行了一些解释 但解决这个问题的一个办法是
function example(id){
this.code= function(){$('.'+id).val(id)}
var self = this;
this.validate= function (){
$('.'+id).keyup(function (e){
if(e.keyCode==13) self.code();
});
}
}
我认为“example”中的函数将用“undefined”代替“id”。您应该将id存储到函数示例中的某个私有变量中。@mightyport:no,this.code中的函数将继承父函数的作用域,并了解
id
var。您知道validate()
函数只是注册了一个keyup
处理程序,并且实际上不执行验证?我认为“example”中的函数将得到“undefined”而不是“id”。您应该将id存储到函数示例中的某个私有变量中。@mightyport:no,this.code中的函数将继承父函数的作用域,并了解id
var。您知道validate()
函数只是注册了一个keyup
处理程序,实际上没有执行验证?还有一件事。将“this”绑定到keyup事件,并将“this”继承到其父函数。如果我的keyup函数是另一个函数,如果我想将“this”继承到父函数,那么如何绑定it@amit-您可以使用类似Petoj的另一个答案的变量来保存“this”-var self=this;--然后在另一个内使用“self”,因为变量可以在作用域链上访问。@lastCoder:我使用setTimeout方法。无需按enter键即可填充值。this.code=setTimeout(function(){$('.+id).val(id)},20)@LastCoder:当我将setTimeout放在函数中时,它正在工作,下面是什么problem@amit-setTimeout的工作方式与事件(如单击或键控)处理程序不同。setTimeout函数中的“this”将是全局作用域(窗口),尽管它仍然可以访问参数变量id--还有一件事。将“this”绑定到keyup事件,并将“this”继承到其父函数。如果我的keyup函数是另一个函数,如果我想将“this”继承到父函数,那么如何绑定it@amit-您可以使用类似Petoj的另一个答案的变量来保存“this”-var self=this;--然后在另一个内使用“self”,因为变量可以在作用域链上访问。@lastCoder:我使用setTimeout方法。无需按enter键即可填充值。this.code=setTimeout(function(){$('.+id).val(id)},20)@LastCoder:当我将setTimeout放在函数中时,它正在工作,下面是什么problem@amit-setTimeout的工作方式与事件(如单击或键控)处理程序不同。setTimeout函数中的“this”将是全局作用域(窗口),尽管它仍然可以访问参数变量id--