[英]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.