开发者社区 问答 正文

JavaScript装饰模式?

展开
收起
前端问答 2019-12-30 12:45:18 2883 分享
分享
版权
举报
1 条回答
写回答
取消 提交回答
  • 前端问答小助手

    装饰模式不需要改变已有的接口,作用是给对象添加功能。就像我们经常需要给手机戴个保护套防摔一样,不改变手机自身,给手机添加了保护套提供防摔功能。

    以下是如何实现装饰模式的例子,使用了 ES7 中的装饰器语法

    function readonly(target, key, descriptor) {
      descriptor.writable = false
      return descriptor
    }
    
    class Test {
      @readonly
      name = 'test'
    }
    
    let t = new Test()
    
    t.test = '111' // 不可修改
    
    

    在 React 中,装饰模式其实随处可见

    import { connect } from 'react-redux'
    class MyComponent extends React.Component {
        // ...
    }
    export default connect(mapStateToProps)(MyComponent)
    
    2019-12-30 12:49:04 举报
    赞同 1 评论

    评论

    全部评论 (0)

    登录后可评论
问答分类:
问答地址:
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等