Интерфейс js webview не может использовать прототип - PullRequest
0 голосов
/ 27 августа 2018

Я использую webview, чтобы добавить объект, например:

public class mediaplayer {

    @JavascriptInterface
    @SuppressWarnings("unused")
    public void testInterface(int num) {
        Log.d("mediaplayer","testInterface2...." + num);
    }

}
 public mediaplayer _mediaplayer = new mediaplayer();
 WebView.addJavascriptInterface(_mediaplayer, "IPTVPlayer");

, и я хочу использовать его на веб-странице, вот так:

function MediaPlayer2()
{

    return IPTVPlayer;
}
MediaPlayer2.prototype.setPlayerParams = function (channel) {

    console.log('MediaPlayer2.prototype.setPlayerParams2................');

};
 var mp2 = new MediaPlayer2(); 
 mp2.setPlayerParams("this is test");

когда я запускаю его, появляется ошибка:

TypeError: Object [object Object] не имеет метода 'setPlayerParams'


Я должен использовать только метод webviewвот так, поэтому должен возвращать 'IPTVPlayer' . Я не знаю, почему я не могу использовать метод-прототип, пожалуйста, дайте мне несколько советов.Я ценю это.

1 Ответ

0 голосов
/ 28 августа 2018

Наследование на основе прототипов без классов может быть довольно сложным в JavaScript.Есть две основные вещи, которые вы должны сделать:

// 1. Correctly set up the constructors to call the super constructor
function MediaPlayer2() {
  // Call the "super" constructor with the new instance (this).
  IPTVPlayer.call(this)
}
// 2. Correctly set up the lookup chain via the prototype
MediaPlayer2.prototype = Object.create(IPTVPlayer.prototype);
MediaPlayer2.prototype.constructor = MediaPlayer2;

// Now you can start adding methods.
MediaPlayer2.prototype.setPlayerParams = ...

Я предлагаю продолжить чтение немного более фоновой работы , а также начать использовать классы ES6, которые являются более явными:

class MediaPlayer2 extends IPTVPlayer {
  constructor() { super(); ... }
  setPlayerParams(...) { ... }
}
...