覆盖 javascript 文件中的一些函数 (summernote.js)

Override some functions in javascript file (summernote.js)

我正在更改 summernote-lite.js 以扩展它的功能,现在我面临一个问题:新版本午餐,现在怎么办?如果我想在我的网站上使用它,我必须再次更改它。我认为对我来说最好的方法是覆盖该文件中已有的函数并将其存储在单独的 js 文件中,但该怎么做呢?

例如这里是 summernote-lite.js 文件的开头:

(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined' ? factory(require('jquery')) :
    typeof define === 'function' && define.amd ? define(['jquery'], factory) :
      (factory(global.jQuery));
}(this, (function ($) {

然后是我要覆盖的几个函数:

var imageDialog = function (opt) {
....
}

下一个:

var ImageDialog = /* @class */ (function () {
    ...

    ImageDialog.prototype.initialize = function () {
      ...
    }
    ImageDialog.prototype.show = function () {
      ...
    }
    ImageDialog.prototype.showImageDialog = function () {
      ...
    }
    ...
}());

我想更改那些提到的功能(在刚刚提到的 ImageDialog 中)。

我该怎么做?

谢谢, 德扬

据我所知,您不能覆盖它们,因为它们被封装在一个函数作用域中,该作用域试图在 class.

上模拟私有方法

无论如何,我建议您不要覆盖任何代码方法,而是扩展 class.

class MyCustomImageDialog extends ImageDialog {
  constructor() {
    super();
  }

  initialize() { … }
  show() { … }
  showImageDialog() { … }
}