如何为自定义函数实现类似jQuery的点表示法(链式调用)功能?
实现自定义函数链式调用(类似jQuery点表示法)的方案
核心原理很简单:调用第一个函数时,返回一个包含所有要暴露方法的对象即可,这些方法执行完成后再把该对象返回,就能一直支持链式调用。
基础实现示例(以JavaScript为例)
// 定义主入口函数 function func(initVal) { // 内部存储初始传值,供后续方法调用 this.value = initVal; // 要对外暴露的方法都挂载到返回对象上 const publicApi = { func2: function(param) { // 此处写func2对应的业务逻辑,示例为字符串拼接 this.value += ` ${param}`; // 关键:方法执行完返回API对象,支持后续链式调用 return publicApi; }, // 可自由扩展更多方法,例如getValue用于获取最终结果 getValue: function() { return this.value; } } return publicApi; }
调用测试
// 完全匹配你需要的调用写法 const result = func("test_string").func2("test_string2").getValue(); console.log(result); // 输出:test_string test_string2
进阶:用类实现更易维护的版本
如果需要扩展的方法较多,用类封装逻辑更清晰:
class ChainTool { constructor(initVal) { this.value = initVal; } func2(param) { this.value += ` ${param}`; // 每个方法都返回当前类实例即可 return this; } func3(param) { this.value += `, ${param}`; return this; } getValue() { return this.value; } } // 主入口函数直接返回类实例 function func(initVal) { return new ChainTool(initVal); }
调用测试
const res = func("hello").func2("world").func3("chain call").getValue(); console.log(res); // 输出:hello world, chain call
注意点:所有需要支持链式调用的方法,最后都要返回对应的实例/对外暴露的API对象,这是链式调用能够成立的核心逻辑。jQuery的底层核心也是该逻辑:所有实例方法执行完成后都会返回jQuery实例本身。
内容的提问来源于stack exchange,提问作者random13eves
相关产品推荐
相关产品推荐

