Javascript通过引用将对象传递给我的函数,但似乎接收fn无法将其传递给第二个函数。
我的主HTML文档上有一个按钮,如下所示:
<form>
<input type="button" value="Epoch"
onclick='epoch(cl2Status, opts2)' />
</form>
它将两个对象传递给函数“epoch”,如下所示:
function epoch (clStatus, opts) {
startClockAt (clStatus.cid, opts, 2, 23, 11, 20);
stopClock (clStatus.cid);
clStatus.clockStopped = true;
}
传递给“epoch”的两个对象只是简单数据项的集合。为了说明它们的结构,这里是一个如何创建(另一个非常相似):
cl2Status = {
clid: 2,
cid: 'clockCanvas2',
testing: false,
nightTime: false,
clockStopped: false,
faceHidden: false
};
函数“epoch”将这两个对象传递给第二个使用对象数据项的函数,并且必须在再次传递对象之前更改其中一个项的值。
通过在各个地方插入警告语句,我可以看到虽然“epoch”可以读取数据,但我的第二个功能却不能。我已经读过,虽然普通的标量变量只能通过值传递,但javascript通过引用传递对象。 (至少在所有实际目的中,即使该描述不太准确。)如果它们可以传递给一个函数,为什么不能将它们传递给另一个函数呢?
有没有办法这样做,以便对象可以在几个跃点周围传递?
答案 0 :(得分:1)
在你的函数中,你没有将整个对象传递给第二个函数,你只传递了对象的'cid'属性。尝试将整个'clStatus'对象传递给第二个函数。
答案 1 :(得分:0)
从函数调用中删除.cid属性:
function epoch (clStatus, opts) {
startClockAt (clStatus, opts, 2, 23, 11, 20); //just pass in the object clStatus
stopClock (clStatus);
clStatus.clockStopped = true;
}