如何用JavaScript创建含lower、upper静态方法的Str类实现大小写转换?
修复Str类的大小写转换方法问题
嘿,我来帮你排查下代码里的问题,顺便给出正确的实现方案:
原代码的几个问题:
- 你需要的是直接通过类名调用的静态方法(比如
Str.lower()),但原代码把逻辑写在了构造函数里,这完全不符合需求的调用方式——构造函数是用来创建类实例的,不是直接通过类名调用的 - 拼写错误:
toLoweCase()少了个字母r,正确写法是toLowerCase() - 构造函数的参数设计也不对,需求里不需要传入
lower和upper这两个参数,而是要接收待转换的目标字符串
正确的实现代码:
class Str { // 静态lower方法:把传入的字符串转为小写 static lower(str) { // 先做参数校验,避免非字符串参数导致报错 if (typeof str !== 'string') { throw new Error('请传入字符串类型的参数哦'); } return str.toLowerCase(); } // 静态upper方法:把传入的字符串转为大写 static upper(str) { if (typeof str !== 'string') { throw new Error('请传入字符串类型的参数哦'); } return str.toUpperCase(); } } // 测试调用 console.log(Str.lower('EAT')); // 返回 'eat' console.log(Str.upper('today')); // 返回 'TODAY' console.log(Str.lower('HALO')); // 返回 'halo'
代码说明:
- 用
static关键字定义静态方法,这样就能直接通过Str.方法名()调用,不需要先创建类的实例 - 增加了参数类型校验,能提前提示错误,避免程序崩溃
- 修正了字符串方法的拼写错误,确保转换逻辑正常执行
内容的提问来源于stack exchange,提问作者okky
相关产品推荐
相关产品推荐

