javascript面向对象编程

来源:互联网 发布:购买的域名需要备案吗 编辑:程序博客网 时间:2024/05/18 00:27
<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*/



0 0