我正在学习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/

10-12 02:15