摘要: 如果闭包作用域链中保存了HTML元素,因为闭包保存了外部函数的活动对象,因而占用的内存就永远不会被回收。 代码如下: function getHtmlElement(){ var element=document.getElementById("htmlElement"); element.onclick=function(){ alert(element.id);//引用了HTML元素,保存了getHtmlElement()的活动对象,导致内存不能被回收。 }; } 如果想要闭包引用HTML元素,又想内存得以被回收,可以将取得的HTML元素保存在一个变量中,闭包引用这个变 阅读全文
posted @ 2012-02-28 11:51 susubanana 阅读(741) 评论(1) 推荐(0)
摘要: 1、闭包是指有权访问另一个函数作用域中的变量的函数。 从作用域链上看,一个函数A包含函数B,B有权利访问A中的变量。作为全局作用域的对象(window)如果想访问A中的变量,是不被允许的,可是它可以通过调用A函数,让B去访问A函数中的变量,以达到函数外部想访问函数内部的目的。2、闭包常见的创建方式是:一个函数内部创建另一个函数(就是A包含B)。3、从微观角度去分析闭包。 1)、当定义了函数A,如果A是一个全局函数,在创建执行环境的过程中,全局执行环境中的变量对象,包含(this<window对象>,函数A,以及用以调用函数A的变量); 2)、然后又在全局作用域中调用函数A,在执行环 阅读全文
posted @ 2012-02-28 11:50 susubanana 阅读(177) 评论(0) 推荐(0)
摘要: 超时调用:var timeoutId=setTimeout(函数/字符串,超时时间);//设置超时,setTimeout()会返回一个超时IDclearTimeout(timeoutId);//通过返回的超时ID,清除超时(重点是每次设置了一步,就要想好以后维护的方法)间歇调用:setInterval();var intervaltId=setInterval(函数/字符串,间歇时间);clearInterval(intervaltId); 阅读全文
posted @ 2012-02-28 11:48 susubanana 阅读(416) 评论(0) 推荐(0)