js 闭包

// 闭包,就是在 函数内部定义另外的函数,可以通过对象调用这些函数,而这些函数可以引用
//外层函数体中的临时变量,如name ,就可以间接的保持这些临时变量,而且只能通过这些函数
//才能使用,及时临时变量已经消失,但是这些函数却还是能够引用到。

// 闭包会造成垃圾回收难题,且性能不佳,以弃用。 改用 原型。
function Person(name){
var _firstname=name;//私有变量
this.name=name;//公共变量
this.sayHello=function(){
alert(this.name);
}
}

var billgates=new Person("billgates");
alert(billgates.name);//billgates ,可以访问
alert(billgates._firstname+"名字");// undefined ,私有变量不可以访问
billgates.sayHello();//即使参数name 已经消亡,也可通过引用person 的name 来获得,
// 间接把临时变量给保留了下来,随billgates消亡而消亡

原文地址:https://www.cnblogs.com/zhangchenglzhao/p/3953645.html