オブジェクトの値を直接ではなく変更することは可能ですか?
例えば
a = {x: 5}
b = a.x
b = 100
a.x // => 5
100 にしたいのですが、実際にa.x
はまだ 5 です。
オブジェクトの値を直接ではなく変更することは可能ですか?
例えば
a = {x: 5}
b = a.x
b = 100
a.x // => 5
100 にしたいのですが、実際にa.x
はまだ 5 です。
あなたがそうしているわけではありません。ただし、これを行うことができます:
a = { x: 5 };
b = a;
b.x = 100;
a.x // => 100
数字を文字としてではなく、オブジェクトとして使用するだけです。
a = {x: {v: 5}}
b = a.x
b.v = 100
a.x.v // => 100
はい、できます。オブジェクトへのすべての参照は、最初のものであるかどうかに関係なく、等しくなります。ただし、a.x
はオブジェクトではなく、 object のプロパティであるa
ため、b = a.x
そのプロパティの値をコピーすると、たまたま に単純な数値になりb
ます。b
は にまったくリンクされておらず、a
に何か他のものを割り当てても にb
は何もしませんa
。を割り当てる必要があります。その後、両方の変数によって参照されるオブジェクトのb = a
プロパティをまたはとして変更できます。.x
a.x
b.x
JavaScript でこれを実現することは不可能です。5 は Number 型で、Value 型です。関数、オブジェクト、または配列とは異なり、参照を通じてアクセスする方法はありません。