Javascript を学習していますが、このコードが機能する理由がわかりません。
function getObj()
{
var objAddress =
{
address: "Client Address",
getAddress: function() {
return this.address;
},
setAddress: function(newAddress)
{
this.address = newAddress;
}
};
var objClient =
{
name: "Client name",
getAddress: function()
{
return objAddress.getAddress();
},
setAddress: function(newAddress) {
objAddress.setAddress(newAddress);
}
};
return objClient;
}
gObj = getObj();
console.log(gObj.getAddress()); // Will print "Client Address"
gObj.setAddress("xpto");
console.log(gObj.getAddress()); // Will print "xpto"
getAddress()
関数を抜けた後に存在しないはずのオブジェクトの別のメソッドを呼び出すので、うまくいかないだろうと思っていました。しかし、これは機能しているobjAddress
ので、関数を終了した後でもオブジェクトがまだ存在していると思いgetObj
ます。
関数の外では、どのように機能しますgObj.getAddress()
か?