[英]Javascript: calling function within D3 from another file
我想在 d3.js 脚本中重写几个与布局之一相关的函数。 当我将这些函数剪切并粘贴到单独的文件中并在 d3.js 之后加载它们时,可视化不再起作用,因为内部函数调用 d3.js 的内部函数。
d3.js:
!function() {
var d3 = { version: "3.5.17" };
function d3_funct() { return d3; } // this function is called in the other file
}();
和弦.js:
d3.svg.chord() = function() {
var funct = d3_funct; // doesn't work
};
题:
当d3_funct
在另一个文件中的立即执行的函数表达式中定义时,我将如何在我的脚本 chord.js 中使用上述函数d3_funct
?
选项:
我错过了什么吗?
所以,你的执行顺序应该是:
您的修改文件应如下所示:
function myBetterD3Funct () { ... }
d3.d3_funct = myBetterD3Funct;
以上将是迄今为止最好的选择。 您在做什么非常清楚,并且不需要您每次下载最新版本时都修改 d3.js 文件(从而允许您使用 d3 cdn 为您的用户提供 d3.js 服务)。
如果您不想覆盖 d3 全局函数本身,则存在另一个选项。 我警告您,以下内容可能不适用于所有情况,具体取决于您的myBetterD3Funct
复杂myBetterD3Funct
以及它需要在d3
访问的内容。
function myBetterD3Funct () { ... }
myBetterD3Funct.apply(d3);
这样做是将函数的范围(在运行时)设置为全局 d3 对象。 这将允许它使用this
引用全局d3
对象中的顶级属性。 正如下面的评论中所指出的,代码中的许多函数和变量都被编写为 private ,因此您无法以任何方式访问它们(除了修改源代码)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.