JavaScript Object构造函数未显示稳定值

时间:2012-06-05 08:47:32

标签: javascript

我有一个js代码如下,

   function findDealerByIdResponse() {
findDealerByIdResponse.prototype = findDealerByIdResponseType;


this.getPrefix = function(){
        return "tns1";
};
this.getNS = function(){
    return "http://www.hp.com/bookservice";
};

} 

function findDealerByIdResponseType(){
var DEALER ;


this.getPrefix = function(){
        return "tns1";
};
this.getNS = function(){
    return "http://www.hp.com/bookservice";
};


}

function getName( obj ) { 

   var funcNameRegex = /function (.{1,})\(/;
   var results = new Object();
   results = (funcNameRegex).exec((obj).constructor.toString());
   return (results && results.length > 1) ? results[1] : "";
};

function test(){
var req = new findDealerByIdResponse();
alert(getName(req));
}

但如果我第一次执行“测试”它会给出我所期望的:“doTransactionType”。但后来它给了“功能”。请解释原因。

由于

迪帕克

1 个答案:

答案 0 :(得分:0)

第一次调用findDealerByIdResponse后,将其prototype属性设置为一个函数,即findDealerByIdResponseType。因此,.constructor将被此赋值覆盖,它将解析为该函数的构造函数 - 就像任何函数Function一样。

相反,你想要这个:

// set prototype to a parent instance
findDealerByIdResponse.prototype = new findDealerByIdResponseType;

// restore .constructor
findDealerByIdResponse.prototype.constructor = findDealerByIdResponse;

你想把它放在两个函数的声明之后。