Can';t在javascript对象中创建函数

Can';t在javascript对象中创建函数,javascript,Javascript,我有两个目标 function Response(dbResponseId, responseText){ this.response = { "dbResponseId" : dbResponseId, "responseText" : responseText, "isDeleted" : false, }; this.setResponseText = function(responseText){

我有两个目标

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;
}
函数响应(dbResponseId,responseText){
此响应={
“dbResponseId”:dbResponseId,
“responseText”:responseText,
“isDeleted”:错误,
};  
this.setResponseText=函数(responseText){
this.response.responseText=responseText;
返回此.response;
};
this.getId=函数(){
返回this.response.frontEndId;
};
this.deleted=函数(){
this.response.isDeleted=true;
};
返回此.response;
}
函数OptionGroup(响应,dboptionGroup id,isDeleted,id){
this.optionGroup={“dbOptionGroupId”:dbOptionGroupId,“responses”:responses,“isDeleted”:isDeleted,“frontEndId”:id};
this.setResponses=函数(响应){
this.optionGroup.responses=响应;
返回this.optionGroup;
};
this.addResponse=函数(响应){
this.optionGroup.responses.push(响应);
返回this.optionGroup;
};
this.getId=函数(){
返回this.optionGroup.frontEndId;
};
this.setId=函数(id){
this.optionGroup.frontEndId=id;
返回this.optionGroup;
};
this.deleted=函数(){
this.optionGroup.isDeleted=true;
返回this.optionGroup;
};
this.getResponseById=函数(id){
for(var i=0;i
然而,当我尝试调用我创建的任何函数时,控制台告诉我所述对象并没有这样的函数。在控制台中打印响应或OptionGroup对象时,可以看到对象中的字段,但看不到任何函数

发生了什么事

请注意,返回的对象(
this.response
this.optionGroup
)都没有您感兴趣调用的函数


最简单的解决方案是删除
返回值
s.

如果Matt的答案很清楚,不知道,但是:

> return this.optionGroup;
表示函数返回
选项组
对象,而不是
引用的新对象

默认情况下,构造函数返回
,因此没有任何返回语句等同于:

return this;
响应
功能相同


当然,假设您使用
new

调用函数,那么为什么要从构造函数返回呢?你不需要,它会自动返回
这个
。你已经创建了一个工厂,而不是构造函数