2012-11-26 55 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调用功能。