闭包

142 阅读1分钟
定义:闭包就是能够读取其它函数内部变量的函数。由于在JavaScript中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”。
原理:产生闭包的子函数被返回并赋值给一个全局变量,这导致子函数始终在内存中,而子函数的存在依赖于父函数,因此父函数也始终在内存中,不会在调用后,被垃圾回收机制(garbage collection)回收。

var name = "The Window";
var object = {    
    name : "My Object",    
    getName() {        
        console.log(this.name)    
    },    
    getName1() {        
        return function() {            
            // 匿名函数的this指向window            
            console.log(this.name)        
        };    
    },    
    getName2() {        
        let self = this        
        return function() {            
            console.log(self.name)        
        };    
    }
}

object.getName()
object.getName1()()
object.getName2()()