/**
* @文件擴展.js
* @module 擴展
*/
從“@babel/runtime/helpers/inherits”導入_inherits;
從 './utils/log.js' 導入日誌;
讓 hasLogged = false;
/**
* 用於通過使用
* `extends` 關鍵字。
*
* @功能
* @棄用
* @例子
* var MyComponent = videojs.extend(videojs.getComponent('Component'), {
* 我的自定義方法:函數(){
* // 在我的方法中做事。
* }
* });
*
* @param {Function} 超類
* 要繼承的類
*
* @param {Object} [subClassMethods={}]
* 新類的方法
*
* @return {函數}
* 具有繼承超類的子類方法的新類。
*/
const extend = function(superClass, subClassMethods = {}) {
// 第一次調用 extend 時記錄警告以注意它已被棄用
// 它之前在我們的文檔(特別是指南)中已棄用,
// 但從未在代碼中正式棄用。
如果(!hasLogged){
log.warn('videojs.extend 已從 Video.js 7.22.0 開始棄用,並將在 Video.js 8.0.0 中刪除');
hasLogged = 真;
}
讓子類=函數(){
superClass.apply(this, arguments);
};
讓方法 = {};
如果(typeof subClassMethods ==='object'){
if (subClassMethods.constructor !== Object.prototype.constructor) {
subClass = subClassMethods.constructor;
}
方法=子類方法;
} else if (typeof subClassMethods === '函數') {
子類 = 子類方法;
}
_繼承(子類,超類);
// 這是向後兼容性和節點兼容性所必需的。
如果(超類){
subClass.super_ = superClass;
}
// 使用 props 的函數和其他屬性擴展 subObj 的原型
for(方法中的常量名稱){
如果(方法.hasOwnProperty(名稱)){
subClass.prototype[名稱] = 方法[名稱];
}
}
返回子類;
};
導出默認擴展;