0

我正在尝试用更少的代码做一个可重用的模块。这样的事情会起作用吗?(好吧,不是真的去工作,这只是一个例子给你的想法)

var test = function(foo) {
    var bar = new foo(); // The keyword foo is from the parameter
}

参数实际上是一个字符串。所以如果我通过了“FooBar”,FooBar就会创建一个对象。

这就像在说:

var test = function('FooBar') {
    var bar = new 'FooBar'(); 
}

还有其他适合我正在寻找的解决方案的优雅方法吗?

非常感谢!

4

2 回答 2

0

如果foo是构造函数,那么您的代码将可以正常工作(我很好奇您为什么不尝试它)。你可以在这里看到它的工作原理:http: //jsfiddle.net/jfriend00/yT6Vk/

如果您想就其他/更好的方法来解决您的问题提出建议,您将不得不备份并描述更多关于您真正想要做的事情。

有其他方法可以做这样的事情,例如工厂函数或单个函数检查它的参数来决定创建哪种类型的对象,但是如果没有更多关于你要解决的问题的详细信息,我们真的不能说出其他方法是否比您已有的方法更好/更差。

此方法的一个缺点是您不允许将任何参数传递给构造函数。

于 2013-05-14T04:18:14.403 回答
0

我会使用 Douglas Crockford 的方法

var booze = {
    beer:'ale',
    wine: 'pinot noir'
}

//test(X)

var createObject = function(o){
    function F () {}
    F.prototype = o
    return new F()
}

var test = function () {
    var x = createObject(booze)
    return x;
}

test()
于 2013-05-14T04:52:44.653 回答