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
    }
}
相关推荐
Moment3 分钟前
你写的网站安全吗?这四个攻击方式正在悄悄盯上你
前端·后端·面试
_荒8 分钟前
Uniapp 开发物联网项目MQTT通信使用和TTS语音播报以及无输入框扫描枪读取
前端·javascript·vue.js
狂炫一碗大米饭13 分钟前
vue面试高频考题----computed和watch的区别❓
前端·vue.js·面试
Kant79339 分钟前
Ant Design X 和 Element-Plus-X
前端
dasseinzumtode41 分钟前
在 React 项目中使用 TypeScript 编写 Service Worker 的完整方案
前端·react.js
来一首_We_go42 分钟前
React Router V7 踩坑指南
前端·react.js
出师未捷的小白43 分钟前
我的嘛也!实现一个时间轴无缝轮播居然如此简单......
前端
郡杰1 小时前
JavaScript基础语法
前端·javascript
cypking1 小时前
svelte+vite+ts+melt-ui从0到1完整框架搭建
前端