【JavaScript】グローバル変数を使わずにすませるには

グローバル変数は、なるべく使っちゃいけないそうですね (´・∀・`)ヘー
(ど素人な発言ですみません)


あるインスタンスのメンバ変数を
別のインスタンスのメソッドで書き換え、
その結果を、また別のインスタンスのメソッドで参照するのは
無理なのではと考えてました。
こういうときこそグローバル変数の出番だ!と。


が、可能でした。


var Class1 = function(){
this.hoge = true;
};
var Class2 = function(){
this.change = function(obj){
obj.hoge = false;
}
};
var Class3 = function(){
this.check = function(obj){
alert(obj.hoge);
};
};
var c1 = new Class1();
var c2 = new Class2();
var c3 = new Class3();
c2.change(c1);
c3.check(c1); //false

不思議だ…。
下記と同じように、無理だと決めつけてました。


function func(x){
x = false;
}
var hoge = true;
func(hoge);
alert(hoge); //true


…。
Mっ気まんまんのすたらが、愛のムチでしばいてほしくて
じっと貴方を見つめています (=´∀`=人)