Javascript d3选择所有源代码
我在试着理解这个问题 我不明白下面我的评论的意思 我可以看到选择器字符串上有一个闭包,调用d3_selectAll时,Javascript d3选择所有源代码,javascript,d3.js,Javascript,D3.js,我在试着理解这个问题 我不明白下面我的评论的意思 我可以看到选择器字符串上有一个闭包,调用d3_selectAll时,this被设置为node,但是调用中的其他三个参数是如何使用的 import "../core/array"; import "selection"; d3_selectionPrototype.selectAll = function(selector) { var subgroups = [], subgroup, node; select
this
被设置为node,但是调用中的其他三个参数是如何使用的
import "../core/array";
import "selection";
d3_selectionPrototype.selectAll = function(selector) {
var subgroups = [],
subgroup,
node;
selector = d3_selection_selectorAll(selector);
for (var j = -1, m = this.length; ++j < m;) {
for (var group = this[j], i = -1, n = group.length; ++i < n;) {
if (node = group[i]) {
//***where are node.__data__, i, j consumed?***
subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i, j)));
subgroup.parentNode = node;
}
}
}
return d3_selection(subgroups);
};
function d3_selection_selectorAll(selector) {
return typeof selector === "function" ? selector : function() {
return d3_selectAll(selector, this);
};
}
导入“./core/array”;
导入“选择”;
d3_selectionPrototype.selectAll=功能(选择器){
var子组=[],
小组,
节点;
选择器=d3_selection_selector或all(选择器);
对于(var j=-1,m=this.length;++j
这仅与子选择相关,并在以下章节中解释:
选择器也可以指定为返回元素数组(或节点列表)的函数,如果没有匹配的元素,则返回空数组。在这种情况下,以和其他操作符函数相同的方式调用指定的选择器,将当前数据d和索引i传递给它,并将此上下文作为当前DOM元素
特别是,如果选择器不是一个函数,则这些参数将被忽略(最后的函数声明没有参数)。Ahh。。。当然我看不见。因此,这三个参数作为d,i,j传递给选择器函数,感谢您对@larskothoff的解释