js中实现多继承(合并多个class)

const mixinClass = (base, ...mixins) => {

    const mixinProps = (target, source) => {

      Object.getOwnPropertyNames(source).forEach(prop => {

        if (/^constructor$/.test(prop)) { return; }

        Object.defineProperty(target, prop, Object.getOwnPropertyDescriptor(source, prop));

      })

    };


    let Ctor;

    if (base && typeof base === 'function') {

      Ctor = class extends base {

        constructor(...props) {

          super(...props);

        }

      };

      mixins.forEach(source => {

        mixinProps(Ctor.prototype, source.prototype);

      });

    } else {

      Ctor = class {};

    }

    return Ctor;

  };

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。