2013-01-04 10 views
5

I niektóre zmienne wchodzą do mojej funkcji.Czy można sprawdzić, czy zmienna js ma wartość d3?

Jeśli pierwszym z nich jest wybór d3, chcę go użyć, w przeciwnym razie chcę użyć domyślnego wyboru.

Jak sprawdzić, czy zmienna jest wyborem d3, czy nie?

+1

Zwykle ludzie używają do tego celu ducktyping. To znaczy. sprawdź, czy zmienna ma wymagane właściwości, a następnie załóż, że jest to obiekt, którego szukasz, jeśli ma określone właściwości. – ThiefMaster

+0

Cóż, aktualna metoda ponownego wiązania jest abstrakcyjna, ponieważ nie chcę powtarzać tego kodu w kółko (jedna z tych funkcji, które zwracają transakcje funkcji). Obecnie sprawdzam 'd3SelectorOrNot.selectAll', ale wydaje się to dość grube. Większość innych bibliotek, z którymi pracowałem, udostępnia funkcję 'isMyLibraryObject()'. Mam nadzieję, że d3 też to zrobi, po prostu nie mogę tego znaleźć. –

Odpowiedz

9

Aby sprawdzić, czy zmienna sel jest d3.selection:

var isselection = sel instanceof d3.selection; 
1

Należy pamiętać, że odpowiedź na (sel instanceof d3.selection) mowa powyżej, która jest zaopatrzona w docs: https://github.com/mbostock/d3/wiki/Selections#d3_selection, nie będzie działać w IE9.

to wyjaśnione tutaj: https://github.com/mbostock/d3/issues/851

Jest problem z IE9 i nie zostanie rozwiązany w D3. Obejście tego problemu można znaleźć w tym zatwierdzeniu: https://github.com/palantir/plottable/pull/637

zamiast tego używa się (typeof sel[0] !== "string"). To nie jest tak jasne, ale będzie zależeć od tego, czy musisz wspierać IE9, czy nie.

Powiązane problemy