如何识别给定数组是d3选择。 我试过这个
function Chart(container, data) {
var isd3Selection = container instanceof Array && typeof container.node === 'function';
this.container = isd3Selection ? container.node() : container;
this.data = data;
this.init();
}
还有其他方法可以找到答案吗?
答案 0 :(得分:4)
V4方式:
d3.selection()
选择根元素document.documentElement。此函数还可用于测试选择(instanceof d3.selection)或扩展选择原型。例如,要添加一个方法来检查复选框:
你可以这样测试:
d3.select(document.body) instanceof d3.selection // true
答案 1 :(得分:2)
根据您的D3版本,您可以使用以下其中一项:
正如我answer至"d3.selection type check in IE"所述,这需要一些解决方法。由于提供了d3.selection
作为扩展选择功能的方法,因此您可以向d3.selection
添加一个新属性,任何选择都可以访问该属性,无论是原型还是通过复制属性。
// Include this at the start of your script to include the
// property in any selection created afterwards.
d3.selection.prototype.isD3Selection = true;
d3.select(document.body).isD3Selection; // true
从v4开始,选择不仅仅是一个嵌套数组,而是一个JavaScript对象,这将使生活变得更加简单。您可以使用标准constructor
属性来检查D3选择:
d3.select(document.body).constructor.name === "Selection" // true
请注意,这仅适用于O. R. Mapper在其comment中指出的未分化版本的D3。对于v4,首选解决方案应该使用instanceof
中列出的{{1}}运算符。