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

2020-06-29  本文已影响0人  wolfBite

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;

  };

上一篇下一篇

猜你喜欢

热点阅读