如何在Google Script库中实现子函数嵌套调用?
实现Google Script库的嵌套/链式函数调用
要实现你需要的嵌套调用方式,有两种常见方案,取决于你想要的是静态嵌套调用(myLibrary.myFunction.subFunction())还是链式调用(myLibrary.myFunction().subFunction()),以下是具体实现:
方案1:静态嵌套调用(无需执行父函数即可调用子函数)
这种方式下,myFunction本身是可执行函数,同时作为对象拥有subFunction属性方法。
修改库中的代码:
function myFunction() { Logger.log('hello'); } // 给myFunction函数对象添加subFunction方法 myFunction.subFunction = function() { Logger.log('world'); };
调用示例:
- 执行父函数:
myLibrary.myFunction()→ 日志输出hello - 直接调用子函数:
myLibrary.myFunction.subFunction()→ 日志输出world - 若想调用子函数时同时输出
hello world,可以修改subFunction:
myFunction.subFunction = function() { myFunction(); // 先执行父函数 Logger.log('world'); };
方案2:链式调用(执行父函数后链式调用子函数)
这种方式下,父函数执行后返回包含子函数的对象,支持myLibrary.myFunction().subFunction()的链式写法,适合按顺序执行的场景。
修改库中的代码:
function myFunction() { Logger.log('hello'); // 返回包含subFunction的对象,实现链式调用 return { subFunction: function() { Logger.log('world'); } }; }
调用示例:myLibrary.myFunction().subFunction() → 日志依次输出 hello 和 world
你原代码的错误原因
function myFunction.subFunction()是无效的JavaScript语法,不能直接通过这种方式定义函数的子函数。必须通过给函数对象添加属性方法(静态嵌套)或者返回包含子函数的对象(链式调用)的方式实现嵌套调用逻辑。
内容的提问来源于stack exchange,提问作者user20472970
相关产品推荐
相关产品推荐

