发布网友
共1个回答
热心网友
这就是闭包的特殊之处。在function里调用function就形成闭包,闭包的作用域并非外层函数结束时就销毁,而是存在heap里,按照例子中的代码,Person被调用了两次,就形成两个的闭包,这时候不能说“他们的作用域下端都是Person的活动对象“,因为这时候他们的作用域是相互的;“这两个对象的方法(函数)的作用域里都包含Person构造函数的活动对象name”这种理解也有偏差,因为这时候在两个闭包里有两个name,改一个影响不到另一个。要把js闭包 和其他“不那么特殊的”如Java的类-私有域-类方法区分开来