首页 > 解决方案 > JS:重塑一个类

问题描述

我正在尝试重新制定我的课程,以便我可以执行以下操作:

 let myPlayer = new NewPlayer().init;

 let player = myPlayer('id', myConfigObj, {});    

我希望能够像那样初始化它,但我不知道该怎么做。是否可以像那样重组它,以便我可以那样使用它?


class NewPlayer {
  constructor() {
    this.player = {};
  }

  init() {
    {}
  }
}

标签: javascript

解决方案


您将对 init 函数的引用存储在 中myPlayer,但该this函数的 未绑定到实例。它实际上是undefined

这是我建议的修复:

import videojs from 'video.js';

class NewPlayer {
  constructor() {
    this.player = {};
  }

  get init() {
    return this._init.bind(this)
  }

  _init(videoPlayerID, videoJSConfig, ivsTech) {
    if (ivsTech) {
      ivsTech(videojs);
    };
    videoJSConfig.techOrder = ['AmazonIVS'];
    this.player = videojs(videoPlayerID, videoJSConfig);
    return this.player;
  }
}

推荐阅读