我正在学习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()
如何工作? 最佳答案
创建使用局部变量的函数时,函数会“记住”该局部变量。所有需要的局部变量都存储在称为闭包的特殊对象中。您不能直接访问它,但是功能可以。
javascript调试中的Chrome开发者工具显示了关闭对象:
关于javascript - JavaScript变量生命周期,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19770887/