在d3.layout.force的源码中,第158行,有这段代码
force.charge = function(x) {
if (!arguments.length) return charge;
charge = typeof x === "function" ? x : +x;
return force;
};
现在,如果你转到第 225 行,你会看到
charges = [];
if (typeof charge === "function") {
for (i = 0; i < n; ++i) {
charges[i] = +charge.call(this, nodes[i], i);
}
} else {
for (i = 0; i < n; ++i) {
charges[i] = charge;
}
}
我在这里不明白的是这条线
charges[i] = +charge.call(this, nodes[i], i);
我是 JavaScript 新手,无法理解这里发生了什么。
据我了解,charge 只需要 1 个参数 ( x)。这里“ this”被传递给当前对象的上下文,但其他两个呢?nodes[i]" " 和 " " 中的哪一个i被视为 " x" ?
又是什么“ = +”在这里做什么?