无法通过在同一个类的另一个方法中使用“this”关键字来调用方法

时间:2016-06-03 16:08:44

标签: javascript jquery

我试图在用户提交表单后传递警报。 html就像这样

<form id="profile" name="profile">
  <label for="firstName">Male</label>
  <input type="text" name="firstname" id="firstName" maxlength="20" class="required" value=""/>
  <input type="submit" name="sumit" value="submit"/>
</form>

JS就是

var Form = function(){}; 

Form.prototype.formValidate = function($form){

    $form.on('submit', function(e){
    e.preventDefault();
    this.test()// this doesn't work
    //alert('t') // this works
  })

}

Form.prototype.test = function(){
    alert('t');
}
var form = new Form();
form.formValidate($('#profile'))

当我收到错误时说..this.test不是函数... 如果我只是在e.preventDefault()之后立即传递警报但是它无法调用我无法通过关键字“this”调用方法。这让我说我的范围不对。我错过了什么?

1 个答案:

答案 0 :(得分:3)

在JavaScript中,<div id="some-element"></div>的值基于范围。每次有this,您就拥有范围。在每个函数中,function(){}将会有所不同,它是根据函数的函数设置的。

您正在执行thisthis.test()不是this对象,而是Form元素。您需要将#profile值保存到变量中,以便在事件中使用它。

this