/**
* @파일 확장.js
* @모듈 확장
*/
import _inherits from '@babel/runtime/helpers/inherits';
'./utils/log.js'에서 로그 가져오기;
let hasLogged = false;
/**
* ES 서브클래싱을 에뮬레이션하여 기존 클래스를 서브클래싱하는 데 사용됨
* `extends` 키워드.
*
* @기능
* @deprecated
* @예
* var MyComponent = videojs.extend(videojs.getComponent('컴포넌트'), {
* myCustomMethod: 함수() {
* // 내 메서드에서 작업을 수행합니다.
* }
* });
*
* @param {함수} 수퍼클래스
* 상속받을 클래스
*
* @param {객체} [subClassMethods={}]
* 새로운 클래스의 메서드
*
* @return {함수}
* superClass를 상속받은 subClassMethods가 있는 새 클래스.
*/
const extend = function(superClass, subClassMethods = {}) {
// extend가 더 이상 사용되지 않음을 알리기 위해 처음 호출될 때 경고를 기록합니다.
// 이전에는 설명서(특히 가이드)에서 더 이상 사용되지 않습니다.
// 그러나 코드에서 공식적으로 사용되지 않습니다.
if (!hasLogged) {
log.warn('videojs.extend는 Video.js 7.22.0부터 사용되지 않으며 Video.js 8.0.0에서 제거됩니다.');
hasLogged = 참;
}
let 서브클래스 = function() {
superClass.apply(this, 인수);
};
let 메소드 = {};
if (typeof subClassMethods === '개체') {
if (subClassMethods.constructor !== Object.prototype.constructor) {
subClass = subClassMethods.constructor;
}
방법 = subClassMethods;
} 그렇지 않으면 (typeof subClassMethods === '함수') {
하위 클래스 = 하위 클래스 방법;
}
_inherits(서브클래스, 슈퍼클래스);
// 이전 버전과의 호환성 및 노드 호환성을 위해 필요합니다.
if(수퍼클래스) {
subClass.super_ = 수퍼클래스;
}
// props의 함수 및 기타 속성으로 subObj의 프로토타입을 확장합니다.
for (메서드의 상수 이름) {
if (methods.hasOwnProperty(이름)) {
subClass.prototype[이름] = 방법[이름];
}
}
하위 클래스를 반환합니다.
};
수출 기본 확장;