首頁 > web前端 > js教程 > 主體

關於閉包問題的詳細介紹

零下一度
發布: 2017-06-26 10:52:27
原創
1451 人瀏覽過

面試的時候常常碰到關於閉包的問題

 
<span style="font-size: 15px; font-family: 宋体"><code class="lang-javascript"><span class="hljs-keyword">var name = <span class="hljs-string">"The Window";   
<span class="hljs-keyword">var object = {
    name : <span class="hljs-string">"My Object",   
    getNameFunc : <span class="hljs-function"><span class="hljs-keyword">function<span class="hljs-params">(){   <span class="hljs-keyword">return <span class="hljs-function"><span class="hljs-keyword">function<span class="hljs-params">(){   <span class="hljs-keyword">return <span class="hljs-keyword">this.name;   
        };   
    },

    getName:<span class="hljs-function"><span class="hljs-keyword">function<span class="hljs-params">(){
        alert(<span class="hljs-keyword">this.name);
    }   
};   
alert(object.getNameFunc()());  <span class="hljs-comment">//The Window
object.getName();  <span class="hljs-comment">//My Object<br/></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></span></code></span>
登入後複製

 

解決js函數閉包記憶體外洩問題的方法

function Cars(){
  this.name = "Benz";
  this.color = ["white","black"];
}
Cars.prototype.sayColor = function(){
  var outer = this.color; //保存一个副本到变量中
登入後複製
<span style="font-size: 15px"> return function(){ </span><br/><span style="font-size: 15px">return outer//应用这个副本</span>
登入後複製
};
登入後複製
outer = null; //释放内存
登入後複製
<span style="font-size: 15px">};<br/> var instance = new Cars(); <br/>console.log(instance.sayColor()())</span>
登入後複製

 

#####

以上是關於閉包問題的詳細介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板