1

誰でもこの動作に光を当てることができますか? また、a を新しいオブジェクト インスタンスとしてプライベートに処理するにはどうすればよいでしょうか? ありがとう

var a = {};

var b = function(obj) {
  obj.z = 10;
  return obj;
};

console.log("---");
console.log(a); // a = {}
b(a);
console.log(a); // a = {z: 10} -- why is a affected? it's not a = b(a);
(function(obj){
  obj.x = 9;
  console.log(obj);
})(a);
console.log(a); // a = {z:10, x: 9} -- a is also manipulated, why?

編集: オブジェクトは参照によってアクセスされるため、「a」はグローバルに影響を受けます。質問は、Node.js のシナリオでは、インスタンスが分離されていないか、新しいものでない場合、これらのオブジェクトがさまざまなユーザーのエントリ ポイントによって変更される可能性があるということです。これに関するアイデア?

4

1 に答える 1

0

変数aをパラメーターとして関数に送信する場合、関数に送信されるのはオブジェクトのコピーではなく、aオブジェクトへの参照です。

関数内のパラメーターは、変数が指してobjいる同じオブジェクトへの参照になります。a関数を変更objすると、その変更はオブジェクト自体に影響します。後で変数aを使用してオブジェクトを確認すると、変更が表示されます。

于 2013-05-24T07:21:16.020 に答える