2012-08-07 138 views
0

我创建了一个对象,我想访问该对象中的变量。但是每次我运行这个,testThis和whatThis变量都是未定义的。我不知道为什么会发生这种情况。为什么我不能在javascript中访问这个变量?

/* HTML above */ 
<script type="text/javascript"> 
    var formData; 
    var dataClickTest; 

    var FormRowData = function() { 
     var self = this; 

     self.someValue = "I am visible. Look Here!"; 

     self.frds = new Array(); 

     self.addRowData = function (ctrlData) { 
      self.frds.push(ctrlData); 
     } 

     self.convertData = function (rowData) { 
      var hi = rowData[0].attr('data-ctrltypeid'); 
      var hello = "hi"; 
     } 
    } 



    function postBackPart(div_id) { 

     formData = $('#' + div_id).find('input, select').filter('[name*=".InputtedData"]'); 

     var testThis = FormRowData();  /* error here */ 
     var whatThis = testThis.someValue; /* error here */  

     $.ajax({ 
      url: '/TestEdit/Sections', 
      type: 'POST', 
      data: formData, 
      success: function (result) { 
      } 
     }); 

     return false; 
    } 
</script> 

</body> 
</html> 

回答

1

FormRowData没有return声明,并且您没有用new关键字调用它,将其视为构造函数,因此它返回undefined

它看起来像你想让它作为一个构造函数这样:

var testThis = new FormRowData(); 

应该可以解决这两个问题。

1

变种testThis = FormRowData();

1

既然你不实际使用的原型,你可以跳过new完全:

var FormRowData = function() { 
    var self = {}; 

    self.someValue = "I am visible. Look Here!"; 

    self.frds = new Array(); 

    self.addRowData = function (ctrlData) { 
     self.frds.push(ctrlData); 
    } 

    self.convertData = function (rowData) { 
     var hi = rowData[0].attr('data-ctrltypeid'); 
     var hello = "hi"; 
    } 

    return self; 
} 

相当于你的代码,而无需new

相关问题