2012-11-26 57 views
0

我有兩個對象不能以JavaScript對象創建函數

function Response(dbResponseId, responseText){ 
    this.response = { 
     "dbResponseId" : dbResponseId, 
     "responseText" : responseText, 
     "isDeleted" : false, 

    }; 

    this.setResponseText = function(responseText){ 
     this.response.responseText = responseText; 
     return this.response; 

    }; 

    this.getId = function(){ 
     return this.response.frontEndId; 
    }; 
    this.deleted = function(){ 
     this.response.isDeleted = true; 
    }; 
    return this.response; 
} 

function OptionGroup(responses, dbOptionGroupId,isDeleted,id){ 
    this.optionGroup = {"dbOptionGroupId" : dbOptionGroupId, "responses" : responses, "isDeleted" : isDeleted,"frontEndId" : id}; 

    this.setResponses = function(responses){ 
     this.optionGroup.responses = responses; 
     return this.optionGroup; 
    }; 
    this.addResponse = function(response){ 
     this.optionGroup.responses.push(response); 
     return this.optionGroup; 
    }; 
    this.getId = function(){ 
     return this.optionGroup.frontEndId; 
    }; 
    this.setId = function(id){ 
     this.optionGroup.frontEndId = id; 
     return this.optionGroup; 
    }; 
    this.deleted = function(){ 
     this.optionGroup.isDeleted = true; 
     return this.optionGroup; 
    }; 
    this.getResponsesById = function(id){ 
     for(var i = 0; i < this.optionGroup.responses.length;i++){ 
      if(id == this.optionGroup.responses[i].getId()){ 
       return this.optionGroup.responses[i]; 
      } 
     } 
     return null; 
    }; 

    return this.optionGroup; 
} 

然而,當我嘗試調用任何我所創建的功能,控制檯告訴我,說對象不具有這樣的功能。當我在控制檯中輸出Response或OptionGroup對象時,我可以看到對象中的字段,但我看不到任何函數。

這是怎麼回事?

+0

爲什麼您從構造函數返回?你不需要,它會自動返回'this'。 – tjameson

+0

你已經創建了一個工廠,不是構造 – Damask

回答

0

說不上如果馬特的回答是明確的,但:

> return this.optionGroup; 

意味着函數返回optionGroup對象,而不是通過this引用的新對象。

構造函數默認返回this,所以根本沒有return語句等價於:

return this; 

同爲Response功能。

假設,當然,你與new調用功能。