繁体   English   中英

函数不可能返回构造函数并创建新实例吗?

[英]Is it not possible for a function to return a constructor and create a new instance?

我有以下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;
}

当我尝试使用new get_type("a")("red")的值创建变量macintosh时,其值是undefined ,甚至认为get_type("a")成功返回了apple构造函数。

我的代码是否有问题,或者不可能有返回构造函数的函数?

编辑:变量macintosh构造。

var macintosh = new get_type("a")("red")

您的问题是新操作员的特殊性。 您的代码基本上是这样的:

var macintosh = (new get_type("a"))("red")

创建类型为get_type的对象,然后get_type传递参数。 您想要的是:

var macintosh = new (get_type("a"))("red")

首先获取构造函数,然后使用它。

您必须发出new命令才能创建新实例。

function get_type(type){
switch(type){
    default: case "a": return new apple(); break;
    case "b": return new banana(); break;
 }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM