/**
 * @file extend.js
 * @module erweitern
 * /

importiere _inherits aus '@babel /runtime/helpers/inherits';
import log from './utils/log.js';

lass hasLogged = falsch;

/**
 * Wird verwendet, um eine bestehende Klasse zu unterklassifizieren, indem die ES-Unterklasse mit dem emuliert wird
 * `extends` Schlüsselwort.
 *
 * @Funktion
 * @deprecated
 * @example
 * var myComponent = videojs.extend (videoJS.getComponent ('Komponente'), {
 * myCustomMethod: Funktion () {
 *//Mach Dinge nach meiner Methode.
 *}
 * });
 *
 * @param {Funktion} SuperClass
 * Die Klasse, von der man erben soll
 *
 * @param {Objekt} [subClassMethods= {}]
 * Methoden der neuen Klasse
 *
 * @return {Funktion}
 * Die neue Klasse mit SubClassMethods, die SuperClass geerbt hat.
 * /
const extend = Funktion (SuperClass, SubClassMethods = {}) {

  //Beim ersten Aufruf von extend eine Warnung protokollieren, um zu vermerken, dass sie veraltet ist
  //Es war zuvor in unserer Dokumentation (insbesondere in Leitfäden) veraltet,
  //wurde aber im Code nie offiziell veraltet.
  wenn (! hat protokolliert) {
    log.warn ('videojs.extend ist ab Video.js 7.22.0 veraltet und wird in Video.js 8.0.0 entfernt. ');
    hasLogged = wahr;
  }

  sei SubClass = Funktion () {
    SuperClass.apply (dies, Argumente);
  };

  lass Methoden = {};

  if (typeof subClassMethods === 'Objekt') {
    wenn (subclassMethods.constructor! == Objekt.prototype.konstruktor) {
      Unterklasse = SubClassMethods.constructor;
    }
    Methoden = SubClassMethods;
  } sonst wenn (typeof subClassMethods === 'function') {
    Unterklasse = UnterklassenMethoden;
  }

  _erbt (Unterklasse, SuperKlasse);

  //Dies ist für die Abwärtskompatibilität und Knotenkompatibilität erforderlich.
  wenn (SuperClass) {
    subClass.super_ = SuperKlasse;
  }

  //Erweitere den Prototyp von SubobJ um Funktionen und andere Eigenschaften von Requisiten
  für (konstanter Name in Methoden) {
    if (methods.hasOwnProperty (Name)) {
      subclass.prototype [Name] = Methoden [Name];
    }
  }

  gib SubClass zurück;
};

Standarderweiterung exportieren;