gpt4 book ai didi

Javascript:从另一个文件调用 D3 中的函数

转载 作者:行者123 更新时间:2023-11-27 23:00:25 25 4
gpt4 key购买 nike

我想在 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 在另一个文件的立即执行函数表达式中定义时,我将如何在我的脚本 cord.js 中使用上述函数 d3_funct?/p>

选项:

  1. 直接编辑 d3.js 文件,而不是拉出函数来重写:(
  2. 重命名封闭的 d3 函数并使用 jQuery 将其加载到和弦.js 中。

我错过了什么吗?

最佳答案

因此,您的执行顺序应该是:

  1. 加载 d3.js
  2. 加载您的自定义修改
  3. 加载其余代码

您的修改文件应类似于:

function myBetterD3Funct () { ... }
d3.d3_funct = myBetterD3Funct;

以上是迄今为止最好的选择。您在做什么非常清楚,并且不需要您每次下载最新版本时都修改 d3.js 文件(从而允许您使用 d3 cdn 向用户提供 d3.js)。

如果您不想覆盖 d3 全局函数本身,则存在另一个选项。我警告您,以下内容可能并不适用于所有情况,具体取决于您的 myBetterD3Funct 的复杂程度以及它需要在 d3 中访问的内容。

function myBetterD3Funct () { ... }
myBetterD3Funct.apply(d3);

它所做的是将函数的范围(在运行时)设置为全局 d3 对象。这将允许它使用 this 引用全局 d3 对象中的顶级属性。正如下面的评论所述,代码中的许多函数和变量都是 written to be private ,因此您无法以任何方式访问它们(除了修改源代码)。

关于Javascript:从另一个文件调用 D3 中的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37176049/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com