JS 自测题 —— 手写 class

现有三种菜单:button 类型,select 类型,modal 类型。

  • 共同特点
    • title icon 属性
    • isDisabled 方法(可直接返回 false)
    • exec 方法,执行菜单的逻辑
  • 不同
    • button 类型,执行 exec 时打印 'hello'
    • select 类型,执行 exec 时返回一个数组 ['item1', 'item2', 'item3']
    • modal 类型,执行 exec 时返回一个 DOM Element <div>modal</div>

用 ES6 语法写出这三种菜单的 class

参考答案

js 复制代码
class BaseMenu {
    constructor(title, icon) {
        this.title = title
        this.icon = icon
    }
    isDisabled() {
        return false
    }
}

class ButtonMenu extends BaseMenu {
    constructor(title, icon) {
        super(title, icon)
    }
    exec() {
        console.log('hello')
    }
}

class SelectMenu extends BaseMenu {
    constructor(title, icon) {
        super(title, icon)
    }
    exec() {
        return ['item1', 'item2', 'item3']
    }
}

class ModalMenu extends BaseMenu {
    constructor(title, icon) {
        super(title, icon)
    }
    exec() {
        const div = document.createElement('div')
        div.innerText = 'modal'
        return div
    }
}
相关推荐
雪芽蓝域zzs4 分钟前
第三十一节:角色管理页面 + 权限分配树形弹窗
前端·javascript·vue.js
zz-zjx5 分钟前
Python实用转换模板
开发语言·前端·python
暖焰核心13 分钟前
C++模板进阶——特化全解
javascript·c++·jquery
Csvn13 分钟前
声明文件(.d.ts):让 TypeScript 认识你的 JS 库
前端
晓得迷路了15 分钟前
栗子前端技术周刊第 145 期 - Remix 3 RC、htmx 4.0、Rslib 1.0...
前端·javascript·react.js
恋猫de小郭20 分钟前
OpenAI :GPT-6 开始你需要给 Skill 和 AGENTS.md 做一次大扫除了
前端·人工智能·ai编程
IT_陈寒21 分钟前
Redis莫名连接失败,查了三天居然是配置的锅
前端·人工智能·后端
晴天1621 分钟前
Esbuild:前端构建工具的“速度革命”
前端
雪芽蓝域zzs25 分钟前
第三十五节:Axios 统一错误拦截、401 Token 过期处理
前端·javascript·vue.js
XIE39231 分钟前
TipKit:开源富文本编辑器套件,一套逻辑,任意风格!
前端·笔记·开源