2013-01-04 58 views
5

我的一些變量進入我的函數。是否需要檢查js變量是否爲d3選擇?

如果其中的第一個選擇是我想要使用的d3選擇,否則我想使用默認選擇。

如何檢查變量是否爲d3選擇?

+1

通常情況下,人們使用ducktyping。即檢查變量是否具有您需要的屬性,然後假定它是您正在查找的對象(如果它具有某些屬性)。 – ThiefMaster

+0

那麼實際的重新綁定方法是抽象的,因爲我不想一遍又一遍地重複這些代碼(其中一個返回函數的函數)。我目前檢查'd3SelectorOrNot.selectAll',但這似乎相當蠢。我所使用的大多數其他庫提供了一個'isMyLibraryObject()'函數。我希望d3也可以,我找不到它。 –

回答

9

要檢查是否變量sel是d3.selection:

var isselection = sel instanceof d3.selection; 
1

請注意,上面提到的(sel instanceof d3.selection)答案,這是在文檔提供:https://github.com/mbostock/d3/wiki/Selections#d3_selection,不會在IE9工作。

這是這裏解釋:https://github.com/mbostock/d3/issues/851

它與IE9的問題,並不會固定在D3。在此提交中可找到解決方法:https://github.com/palantir/plottable/pull/637

改爲使用(typeof sel[0] !== "string")。這不是很清楚,但它取決於您是否需要支持IE9。