您的位置:首页 > Web前端 > JavaScript

javascript面向对象编程

2016-11-09 18:23 471 查看
<span style="color: rgb(90, 90, 90); font-family: 'microsoft yahei'; font-size: 18px; line-height: 29.7px; white-space: pre-wrap;">这里创建的闭包都指向一个共同的局部变量i,闭包不会记录值它们只拥有i的引用。</span>
function f(){
var a=[];
var i;
for(i=0;i<3;i++)
{
a[i]=function(){
return i
}
}
return a;
}
var a=f();
a[0]();

/*
3
*/
a[1]();

/*
3
*/

使用自调函数

function f(){
var a=[];
var i;
for(i=0;i<3;i++){
a[i]=(function(x){
return function (){
return x;
}
})(i);
}
return a;
}
var a=f();
a[0]();
a[1]();
/*
0
*/
/*
1
*/
定义一个内部函数实现相同功能

function f(){
function makeClosure(x){
return function (){
return x;
}
}
var a=[];
var i;
for(i=0;i<3;i++)
{
a[i]=makeClosure(i);
}
return a;
}
var a=f();
a[0]();
a[1]();

/*
0
*/
/*
1
*/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: