【发布时间】:2012-06-06 05:21:32
【问题描述】:
在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”?
“= +”又在这里做什么?
【问题讨论】:
-
我认为还有另一个“充电”功能。
标签: javascript d3.js reverse-engineering force-layout