/**
* @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;