我正在尝试使用较少的代码来执行可重用的模块。这样的事情会起作用吗? (好吧,不是真的会起作用,这只是一个给你这个想法的例子)
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'();
}
还有其他优雅的方式适合我正在寻找的解决方案吗?
非常感谢!
答案 0 :(得分:0)
如果foo
是一个构造函数,那么你的代码就可以了(我很好奇为什么你不只是尝试它)。你可以在这里看到它:http://jsfiddle.net/jfriend00/yT6Vk/。
如果您想要其他/更好的方法来解决您的问题,您将需要备份并描述更多关于您真正想要做的事情。
还有其他方法可以做这样的事情,例如工厂函数或单个函数来检查它决定要创建哪种类型的对象的参数,但是如果没有关于你要解决的问题的更多信息,我们可以真的要说其他方法是否比你现有的方法更好/更差。
此方法的一个缺点是您不允许将任何参数传递给构造函数。
答案 1 :(得分: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()