我有以下JavaScript代码,由一个函数和两个构造函数组成:
function get_type(type){
switch(type){
default: case "a": return apple; break;
case "b": return banana; break;
}
}
function apple(color){
this.color = color;
this.age = 0;
}
function banana(length,unit){
this.length = length;
this.unit = unit||"cm";
this.age = 0;
}
当我尝试创建值为macintosh
的变量new get_type("a")("red")
时,其值为undefined
,即使get_type("a")
成功返回apple
构造函数
我的代码有问题,还是不可能有返回构造函数的函数?
macintosh
。var macintosh = new get_type("a")("red")
答案 0 :(得分:2)
您的问题是新运营商的特殊性。您的代码基本上是这样的:
var macintosh = (new get_type("a"))("red")
创建get_type
类型的对象,然后将参数传递给它。你想要的是这个:
var macintosh = new (get_type("a"))("red")
首先获取构造函数,然后使用它。
答案 1 :(得分:0)
您必须发出new
才能创建新实例。
function get_type(type){
switch(type){
default: case "a": return new apple(); break;
case "b": return new banana(); break;
}
}