【问题标题】:access main class attributes from sub class callback in javascript从javascript中的子类回调访问主类属性
【发布时间】:2017-12-28 23:43:36
【问题描述】:

Javascript 代码 我想在媒体回调函数中使用 this.progressbar

  class CatMusicPlayer {

  constructor(url,playPauseBtn,progressbar,progressTime,durationTime) {
    this.url = url;
    this.playPauseBtn = playPauseBtn;
    this.progressbar = progressbar;
    this.progressTime = progressTime;
    this.durationTime = durationTime;

    new Media(url,null,this.logerror,function(mediaStatus){

        /*
            i want to use this.progressbar,
            but in this block "this" reffers to Media class.
            Media is kind of another class similar to CatMusicPlayer
        */

    });
  }

【问题讨论】:

    标签: javascript class object


    【解决方案1】:

    this 的值缓存到另一个变量,例如const _thisMP = this; 稍后使用它_thisMP.progressbar();

    或者在您的情况下,您甚至可以直接调用progressbar(),因为它可以访问

    class CatMusicPlayer {
    
      constructor(url,playPauseBtn,progressbar,progressTime,durationTime) {
        this.url = url;
        this.playPauseBtn = playPauseBtn;
        this.progressbar = progressbar;
        this.progressTime = progressTime;
        this.durationTime = durationTime;
        const _thisMP = this;
    
        new Media(url,null,this.logerror,function(mediaStatus){
           _thisMP.progressbar(); // call here
    
            /*
                i want to use this.progressbar,
                but in this block "this" reffers to Media class.
                Media is kind of another class similar to CatMusicPlayer
            */
    
        });
      }
    

    【讨论】:

    • 谢谢你:)。这很简单。我刚刚陷入寻找其他出路的循环。谢谢 :) 现在可以正常使用了
    • @KathanShah 很高兴它有帮助。
    【解决方案2】:
    class CatMusicPlayer {
    
      constructor(url,playPauseBtn,progressbar,progressTime,durationTime) {
        this.url = url;
        this.playPauseBtn = playPauseBtn;
        this.progressbar = progressbar;
        this.progressTime = progressTime;
        this.durationTime = durationTime;
        let self = this;
        new Media(url,null,this.logerror,function(mediaStatus){
           self.progressbar();
    
    
        });
      }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-24
      • 2019-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-24
      • 1970-01-01
      相关资源
      最近更新 更多