参考:https://www.cnblogs.com/Jabin/p/5804114.html
一、什么是闭包
可实现函数外部访问函数内部变量的函数
二、如何创建
一个函数内创建另一个函数,通过另一个函数访问这个函数的局部变量
三、闭包的作用
1、实现函数外部访问内部变量
2、函数内的局部变量不会被回收,是一个优点也是一个弊端,不断增加会影响性能
四、闭包实例
1、点击li弹出点击的是第几个
<div><li>0</li><li>1</li><li>2</li></div>
<script>
var lis = document.getElementsByTagName("li");
for(var i= 0;i<lis.length;i++){
(function(i){//外部函数
lis[i].onclick = function(){alert(i)}//内部函数使用外部函数的参数
})(i);
}
</script>
2、实现函数外部访问内部变量,并且可以修改
var person = function(){
var name = "xiaioming"
return{
getname:function(){
return name
}
setname:function(newname){
name =newname
}
}
}();
console.log(person.name)//undefined
console.log(person.gername())//xiaoming
console.log(person.sername("hong"))
继承实例
//继承实例
function jichen(name){
this.name = name;
this.set = function(){
console.log("林"+this.name)
}
}
var car = new jichen("俊杰")
console.log(car.name) //俊杰
console.log(car.set()) //林俊杰