2013-01-04 33 views
5

Tôi có một số biến đi vào chức năng của mình.Có phải kiểm tra xem biến js có phải là lựa chọn d3 không?

Nếu đầu tiên trong số này là lựa chọn d3 tôi muốn sử dụng, nếu không tôi muốn sử dụng lựa chọn mặc định.

Làm cách nào để kiểm tra xem biến có phải là lựa chọn d3 hay không?

+1

Thông thường mọi người sử dụng ducktyping cho việc này. I E. kiểm tra xem biến có các thuộc tính bạn cần và sau đó giả sử nó là đối tượng bạn đang tìm kiếm nếu nó có các thuộc tính nhất định. – ThiefMaster

+0

Vâng phương pháp rebinding thực tế là trừu tượng vì tôi không muốn lặp lại mã đó hơn và hơn (một trong những hàm trả về một hàm thỏa thuận). Tôi hiện đang kiểm tra 'd3SelectorOrNot.selectAll' nhưng điều đó có vẻ khá gimpy. Hầu hết các thư viện khác tôi đã làm việc với cung cấp một hàm 'isMyLibraryObject()'. Tôi hy vọng d3 cũng vậy, tôi không thể tìm thấy nó. –

Trả lời

9

Để kiểm tra xem biến sel là một d3.selection:

var isselection = sel instanceof d3.selection; 
1

Xin lưu ý rằng câu trả lời nêu trên cho (sel instanceof d3.selection), được cung cấp trong tài liệu: https://github.com/mbostock/d3/wiki/Selections#d3_selection, sẽ không làm việc trong IE9.

này được giải thích ở đây: https://github.com/mbostock/d3/issues/851

Đó là một vấn đề với IE9 và sẽ không được cố định trong D3. Bạn có thể tìm giải pháp thay thế trong cam kết này: https://github.com/palantir/plottable/pull/637

sử dụng (typeof sel[0] !== "string") thay thế. Điều này không rõ ràng nhưng nó sẽ phụ thuộc vào nếu bạn cần hỗ trợ IE9 hay không.

Các vấn đề liên quan