2012-08-07 201 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

相關問題