Javascript 在d3.classed()运算符中包含赋值意味着什么?

Javascript 在d3.classed()运算符中包含赋值意味着什么?,javascript,d3.js,Javascript,D3.js,我试图理解d3的例子 本例中有以下功能: function dragstart(d) { d3.select(this).classed("fixed", d.fixed = true); } 该函数为节点提供“node fixed”类,并对力模型执行某些操作以使这些节点固定。我对它是如何做到这一点感到困惑。根据规范,我希望.classed遵循#selection.classed(name[,value])的形式,但对于这一点,值是一个赋值。这是怎么回事?如何使此函数在不更改类的情况下

我试图理解d3的例子

本例中有以下功能:

function dragstart(d) {
    d3.select(this).classed("fixed", d.fixed = true);
}

该函数为节点提供“node fixed”类,并对力模型执行某些操作以使这些节点固定。我对它是如何做到这一点感到困惑。根据规范,我希望.classed遵循
#selection.classed(name[,value])
的形式,但对于这一点,
是一个赋值。这是怎么回事?如何使此函数在不更改类的情况下将force layout属性更改为fixed?

代码正在同时更改这两个属性。相当于(但短于)


这是因为Javascript中赋值的值就是被赋值的值,即
d.fixed=true
计算为
true
,然后由
classed()
函数使用。

谢谢,这很有意义。如何在不修改类的情况下为所选节点设置
d.fixed=true
?只需在
dragstart()
内部运行
d.fixed=true
。很好。关于这一点,还有一个问题,作为
d
传递给dragstart的到底是什么?使用以下相关代码调用它
node=node.data(graph.nodes).enter().append(“circle”).attr(“class”,“node”).attr(“r”,12).on(“dblclick”,dblclick).call(拖动)其中阻力定义为
var drag=force.drag().on(“dragstart”,dragstart)。是否是
节点
最终被传递到
dragstart(d)
?绑定到被拖动的DOM元素的数据。
d3.select(this).classed("fixed", function() {
                    d.fixed = true;
                    return true;
                });