如何将原型函数添加到外部框架?

How to add a prototype function to an external framework?

我想知道如何将我自己的函数添加到一个由框架构建的对象中。所以,框架是 vis.js,我想将函数添加到 DataSet 对象。

数据集是通过以下方式生成的:

var myDataSet = new vis.DataSet();

所以我想

vis.DataSet.prototype.addFormattedNode = function () {...}

可以解决问题。遗憾的是,Chrome 开发工具报告:

Uncaught ReferenceError: DataSet is not defined

这应该是基于vis框架还没有加载吧?我尝试在开发工具中添加原型(在加载所有内容之后)并且它可以工作。可以做到这一点,但我正在寻找没有肮脏黑客的 "right way" :-)

对此有什么想法或最佳做法吗?

谢谢!

您的解决方案

vis.DataSet.prototype.addFormattedNode = function () {...}

确实应该可以正常工作。当然,这只有在首先加载 vis 时才有效,因此您必须以正确的顺序加载内容。

一个更简洁的解决方案是像这样创建原型的扩展:

function MyDataSet (data, options) {
  vis.DataSet.call(this, data, options);
}

MyDataSet.prototype = new vis.DataSet();

MyDataSet.prototype.addFormattedNode = function () {
  // ...
};

那么你可以使用MyDataSet代替vis.DataSet