如何在javascript中继承Class?

时间:2013-07-31 13:05:19

标签: javascript jquery

该功能不起作用,它没有将值放在“输入”中。

function example(id){
    this.code= function(){$('.'+id).val(id)}
    this.validate= function (){
        $('.'+id).keyup(function (e){
            if(e.keyCode==13) this.code();
        })
    }
}

<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>

2 个答案:

答案 0 :(得分:4)

您的keyup事件处理程序将具有不同的“this”。您可以使用bind来纠正问题

keyup(function (e){
if(e.keyCode==13) this.code();
}.bind(this))

绑定到事件时,将调用处理程序,并将“this”关键字设置为触发事件的对象,而不是创建事件的对象。

答案 1 :(得分:1)

对于这个问题,javascript有点难以理解..

这篇文章解释了其中一些http://www.crockford.com/javascript/inheritance.html 但解决这个问题的一种方法是

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();
        });
    }
}