说我使用了一个揭示模块模式并具有嵌套函数,如:
function outer () {
function a () {}
function b () {}
function c () {}
}
我可以用对象简写来揭示这些函数,如:
return { a, b, c };
或者我需要将它们绑定到变量,如:
var a = function a () {};
var b = function b () {};
答案 0 :(得分:5)
我可以用对象速记显示这些函数,如:
return { a, b, c };
是。像你的问题中的那些函数声明创建了一个标识符(函数名)与当前lexical environment object中的值(函数对象)的绑定;这些绑定就像变量创建的绑定一样,可以与新的ES2015速记对象表示法一起使用。
示例(您需要使用支持ES2015简写表示法的浏览器;最新的Chrome或Firefox都有):
function outer () {
function a () { console.log("a"); }
function b () { console.log("b"); }
function c () { console.log("c"); }
return {a, b, c};
}
const o = outer();
o.a(); // "a"
答案 1 :(得分:0)
一个简单的解决方案是测试它:https://jsfiddle.net/cuvvn2sw/1/
所以是的,这将起作用
(代码:
function outer () {
function a () {
alert('a');
}
function b () {
alert('b');}
function c () {
alert('c');}
return {a,b,c};
}
var fcts = outer();
fcts.a();
fcts.b();
fcts.c();