javascript闭包理解

时间:2023-01-21 17:58:55
//闭包理解一
function superFun(){
var _super_a='a';
function subfuc(){
console.log(_super_a);
}
return subfuc;
}
var f1=superFun();
superFun()();
f1();
//闭包理解二
function outputNum(count){
(function(){
for(var i=0;i<count;i++){
alert(i);
}
})()
alert(i);//访问报错
}
outputNum(3);
//闭包理解三 var result=[];
function foo(){ for (var i= 0;i<3;i++){
result[i]=(function(j){
return function(){
console.log(j);
};
})(i);
}
};
foo();
result[0](); // 0
result[1](); // 1
result[2](); // 2

问:全面理解Javascript闭包和闭包的几种写法及用途

1、不使用prototype属性定义的对象方法,是静态方法,只能直接用类名进行调用!另外,此静态方法中无法使用this变量来调用对象其他的属性!

2、使用prototype属性定义的对象方法,是非静态方法,只有在实例化后才能使用!其方法内部可以this来引用对象自身中的其他属性!