我想使用以下代码
创建一个临时构造函数 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
没有返回构造函数?
答案 0 :(得分:1)
您需要对代码稍作修改。如果你想让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
,这些parentesis会立即执行foo
并为其分配新函数f_
。