これは、以前のクエリのフォローアップです。それ以来、私はいくつかのコードを試してきました:
var myFunc = function(){
this.int1=1;
var int2=2;
};
myFunc.int1=3;
myFunc.int3=4;
for(var name in myFunc){
console.log('myFunc...'+name+'='+myFunc[name]);
};
var myFuncImpl = new myFunc();
myFuncImpl.int1=5;
for(var name in myFuncImpl){
console.log('myFuncImpl...'+name+'='+myFuncImpl[name]);
};
そして、次のように出力されます:
myFunc...int1=3
myFunc...int3=4
myFuncImpl...int1=5
次の質問にはお答えできません。
int2が myFunc のプロパティとして表示されないのはなぜですか? それはまだ myFunc のスコープにありますよね?この定義はどこに消えますか?
関数スコープ外でint1の値を上書きできるのはなぜですか? 誰かが私の値をコード外で誤って削除した場合はどうなりますか? 「オブジェクト」については、「Object.freeze()」が myFuncImpl よりも役立つことを理解していますが、 myFunc のような関数定義はどうですか?
myFuncImplから int3にアクセスできないのはなぜですか? 前の定義 (myFunc の定義中) はどこに行ったのですか?
私の疑問は、myFunc を (Java のように) 「クラス」として、myFuncImpl をオブジェクトとして考えているためだと思います。おそらく私はあまりにも遠くに迷い込んでいますか?
ありがとう !