我學習JavaScript,我不明白爲什麼此代碼的工作: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()
調用的對象,不應該離開功能之後存在的另一種方法。但是,因爲這是行得通的,所以我認爲即使在退出getObj
函數之後,對象objAddress
仍然存在。
功能之外,gObj.getAddress()
如何工作?
閱讀關於閉包,它們非常重要。 –
是什麼讓你覺得'getAddress()'調用方法不存在? – JJJ
我來自C/C++,我認爲,在return語句之後,函數的所有局部變量都將被刪除。所以,objAddress也會被取消。 – javlacerda