2016-08-03 119 views
-2

我创建了一个返回true和false的原型方法。问题是它不会返回值。我知道它达到的声明,因为我已经使用console.log()满足条件但不返回值。为什么我的原型方法返回undefined?

我似乎无法弄清楚这一点。如果有人能帮助我,我会非常感激。下面是我的代码

function Validation(){ 
    this.checkRequired = function(){ 
     $(".modifiers-group-cont").each(function(){ 
      var select_opt_notify = $(this).find(".select-option-notify"); 

      /*The radio buttons that are required are always going to be marked check,thats why we are only 
      * checking for the checkbox*/ 
      if($(this).attr("data-is-checked") == "false" && $(this).attr("data-input-type") == "checkbox"){ 
       select_opt_notify.show(); 
       return false; 
      } else { 
       select_opt_notify.hide(); 
       return "true"; 
      } 
     }); 
    } 

function ModifierPost(){ 
    (function(){ 
     $("#add-to-cart").click(function(){ 
      console.log(validation.constructor); //Shows undefined 

      if(validation.checkRequired()){ 
      $.post("#",$("form").serialize()+ "&item_id=" + item_id); 
      } 
     }); 
    })(); 
} 
+0

哪里原型方法? 'this.methodName'与原型方法不一样。 – skyline3000

+0

“我创建了一个原型方法”不,你刚刚在一个对象上声明了一个方法。一个原型方法会沿着'Validation.prototype.checkRequired = function(){...}'的方向进行声明。 – zzzzBov

+0

@zzzzBov好吧对不起,我对一个对象的原型和常规方法之间感到困惑 – json2

回答

2

return陈述属于功能each

$(".modifiers-group-cont").each(function(){ 

你需要暴露值,您想返回到外部范围,并呼吁return后致电each

+0

感谢您指出。我甚至没有意识到这一点。 – json2

0

你已经用Capital V创建了你的函数,并且在验证函数名 中用Smaill v调用,这就是它给你提供的未定义代码中提到的地方的原因。

console.log(validation.constructor); //Shows undefined 
if(validation.checkRequired()){ 

应当与资本V一样

console.log(Validation.constructor); //Shows undefined 
if(Validation.checkRequired()){