如何在JavaScript中实现支持无限链式调用的greet函数?
修复支持无限链式调用的greet函数
原代码存在明显问题:仅支持最多三次调用,且存在未定义变量b,完全无法实现无限链式拼接需求。以下是正确的实现方案:
实现代码
function greet(str) { let message = str ? str.trim() : ''; const chainable = function(nextStr) { if (nextStr) { message += ` ${nextStr.trim()}`; } return chainable; }; chainable.toString = function() { return message.charAt(0).toUpperCase() + message.slice(1); }; return chainable; }
实现说明
- 用内部变量
message维护拼接后的字符串,每次调用传入新字符串时,自动追加空格并拼接(trim()处理避免多余空格) - 返回的
chainable函数本身就是可链式调用的载体,每次调用后依然返回自身,实现无限链式调用 - 重写
toString方法:当console.log输出时,会自动触发该方法,返回首字母大写的最终拼接结果,匹配示例的输出要求
测试验证
执行console.log(greet('hello').greet('world').greet()),会输出Hello world,完全符合预期。
内容的提问来源于stack exchange,提问作者Praveen Vishnu
相关产品推荐
相关产品推荐

