最後に、次のコードに閉鎖の匂いがします。
function create(parent) {
var F = function() {};
F.prototype = parent;
return new F();
}
var masterObject = {a: "masterObject value"}
var object1 = create(masterObject);
var object2 = create(masterObject);
var object3 = create(masterObject);
var object3.a = "overridden value";
object1.a; // "masterObject value"
object2.a; // "masterObject value"
object3.a; // "overridden value"
masterObject.a = "new masterObject value"//value is changed now
object1.a; // "new masterObject value"
object2.a; // "new masterObject value"
object3.a; // "overridden value"
object1.a 、abject2.a の値は永久に変更されます。これは、グローバル変数を変更したためですか、それとも閉鎖の影響ですか?Create()関数を再度呼び出していないため、値が自動的に変更されるのはなぜですか? 最後の質問「グローバル変数を変更すると、tht 変数を使用するすべてのオブジェクトに自動的に影響しますか?」その変数を有効にするには、Create() 関数を再度呼び出す必要がありますね。