在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
" ?
又是什么“ = +
”在这里做什么?