开发者社区> 问答> 正文

JavaScript装饰模式?

展开
收起
前端问答 2019-12-30 12:45:18 2875 0
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 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Javascript中的对象 立即下载
JavaScript异步编程 立即下载