我想用下面的代码创建一个临时构造函数,
var foo = function() {
var bar = {
a : 3,
b : {c: 4, d: {e: 5}}
};
var f_ = function() {};
f_.prototype = bar;
return f_;
}据我理解,foo应该返回一个可以用作构造函数的函数,就像var baz = new foo一样,构造函数返回一个函数,而不是一个对象。我可以从返回的函数中看到原型,
>baz.prototype
{ a: 3, b: { c: 4, d: { e: 5 } } }所以,我的问题是,为什么foo不返回构造函数?
发布于 2015-04-16 20:12:09
您需要对代码稍加修改。如果您希望foo是一个构造函数,那么首先要确保它是一个直接函数,它返回一个新的构造函数:
var foo = function() {
var bar = {
a: 3,
b: {c: 4, d: {e: 5}}
};
var f_ = function() {};
f_.prototype = bar;
return f_;
}();
var obj = new foo();
alert(obj.a + ', ' + obj.b.d.e)
注意,()在foo函数的末尾,这些父函数使foo立即执行,并将新的函数f_分配给它。
https://stackoverflow.com/questions/29684900
复制相似问题