我有一个像
一样的构造函数function foo() {
this.bar = function() {
return "fubar";
}
}
当我拨打new foo().bar();
但如果我想做这样的事情
function foo() {
this.bar = function() {
function subbar() {
return "subbar";
};
}
}
我已经尝试过以下版本,但没有一个可以使用。
function foo() {
this.bar = function() {
this.bar.subbar() {
return "subbar";
};
}
}
function foo() {
this.bar = function() {
this.bar.prototype.subbar() {
return "subbar";
};
}
}
如何到达new foo().bar().subbar()
答案 0 :(得分:3)
只返回一个具有最内层功能的对象:
function foo() {
this.bar = function() {
return { subbar: function subbar() {
return "subbar";
};
}
}
}
或者,您可以在没有对象的情况下返回函数:
function foo() {
this.bar = function() {
return function subbar() {
return "subbar";
};
}
}
然后你会这样称呼它:this.bar()()
第二组parens调用返回的subbar()
函数
由于函数是对象,当您调用bar()
时,返回值将是函数subbar()
答案 1 :(得分:2)
你想要的是返回一个附加了函数的对象。
function foo() {
this.bar = function() {
return {
subbar: function() {
return 'subbar';
}
};
};
}