国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
多個js中如何避免方法名重復(fù)

我想很多人面試的時候都會遇到這個問題,在最開始進入it行業(yè)的時候其實我也不懂該怎么回答,后來很多人告訴我用閉包,然后再有面試我就直接回答閉包,但其實我自己并不是太明白閉包的概念,也根本不了解它是如何來防止方法名的重復(fù),下面我就簡單講解下我所了解的。

先談?wù)勯]包的概念,其實閉包就是能夠讀取其他函數(shù)內(nèi)部局部變量的函數(shù),由于在js函數(shù)中,只有函數(shù)內(nèi)部的函數(shù)才可以讀取局部變量,因此可以把閉包簡單的理解為定義在一個函數(shù)內(nèi)部的函數(shù)。下面用一個例子簡單驗證閉包的2大主要功能。1,讀取函數(shù)內(nèi)部變量。2,讓這些變量的值始終在內(nèi)存中。

例子:

function a(){

var n = 99;

function b(){

alert(n);

n ;

//或者寫成 alert(n );

}

return b;

}

通過實例我們可以很簡單的發(fā)現(xiàn),n是a函數(shù)內(nèi)部的一個局部變量,我們在函數(shù)外部是無法讀取n的,但是在內(nèi)部函數(shù)b中卻可以讀取,這就驗證了閉包的第一個功能,讀取函數(shù)內(nèi)部變量。下面我們通過一些打印語句來驗證其第二個功能。

var c = a();

c();

c();

c();我來簡單解析下這四句話:var c = a();其實就是把b的值賦值給c,這里的b是一個方法名,很多人可能覺得這里會有錯誤,其實是沒有任何錯誤的,不信的可以自己去嘗試下。這里的b我們用alert(b)打印出來的其實就是function b(){alert(n);n ;//或者寫成 alert(n );},所以c的其實就這個整個b函數(shù)。執(zhí)行c()其實就是執(zhí)行b(),最后執(zhí)行三次c()之后我們會發(fā)現(xiàn)每一次打印出來n的值分別是99,100,101,這里其實就驗證了閉包的第二個功能。當(dāng)我們在函數(shù)外部調(diào)用一個普通的js函數(shù)時,當(dāng)調(diào)用結(jié)束后,js函數(shù)里面的局部變量的值就會被垃圾回收機制回收釋放,但在這里卻是從99變成了101,并沒有回收,這是為什么呢?原因在于a是b的父函數(shù),而b是一個全局變量,這導(dǎo)致b始終在內(nèi)存中,而b的存在依賴于a,所以導(dǎo)致a也始終在內(nèi)存中,從而導(dǎo)致n變量沒有被回收釋放。至此,閉包的兩大常用功能解析清楚。

下面接著談?wù)刯s文件重名文件:

避免多個js方法名重合的最簡單方法就是:采用類來封裝js頁碼?;A(chǔ)寫法如下“

var wdh = (function($){

var _this = {};

//定義變量

_this.a = '';

_this.b = '';

//定義方法

_this.c = function(){

         }

_this.d =function(){}

 return _this;

})(JQuery);

因為返回了_this,所以在其他地方調(diào)用時只需要用wdh.a wdh.c()這種即可。這樣完美的避免了重復(fù)的問題。

上面之所以講述了一些閉包的概念,是因為個人確實不理解下面我采用的這種避免方法名重復(fù)的方法到底和閉包有何聯(lián)系,如果看到有會的人希望在下面留言解析下,在此謝謝了。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
JavaScript入門-函數(shù)function(二)
js變量前有 var 與沒有的區(qū)別
02. JS 變量(variable)
JS全局變量VAR和THIS--在函數(shù)內(nèi)部,加var是局部變量,不加是全局變量
web前端面試題JS篇之閉包
javascript深入理解js閉包
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服