1. 程式人生 > >JS閉包回撥的理解

JS閉包回撥的理解

最近工作很不順心啊,遇到問題解決不了真的好煩啊,好煩啊抓狂

不過看到一個有意思的東西,自己做了些擴充覺得還不錯。分享給大家。

var name = "The Window";   
var object = {   
	name : "My Object",   
	getNameFunc1 : function(){   
		return function(){
			return this.name   
		}
	},
	getNameFunc2 : function(){
		return this.name;
	},
	getNameFunc3 : function(callback){
		return callback;
	},
	getNameFunc4 : function(callback){
		return callback();
	}
};
各位看官可能覺得我只是定義了一個字串和一個物件,物件中有個name變數還有4個函式而已,那麼,如果我問一下幾個問題。各位看官該如何回答。
alert(object.getNameFunc1+"//test1");
alert(object.getNameFunc1()+"//test2");
alert(object.getNameFunc1()()+"//test3");
alert(object.getNameFunc2+"//test4");
alert(object.getNameFunc2()+"//test5");
alert(object.getNameFunc3(function(){return this.name})+"//test6");
alert(object.getNameFunc4(function(){return this.name})+"//test7");
alert(object.name+"//test8");
冷靜思考一下哦。這裡的坑可不小的。

相關推薦

JS理解

最近工作很不順心啊,遇到問題解決不了真的好煩啊,好煩啊。 不過看到一個有意思的東西,自己做了些擴充覺得還不錯。分享給大家。 var name = "The Window"; var object = { name : "My Object", getN

JS-(closure)的理解

可能很多人在剛學js的時候都會聽說過閉包,但是卻完全不瞭解閉包是什麼,當然我也在其中,其實閉包大量的存在在我們的程式碼中。我們缺少的是去識別閉包,擁抱閉包的思維。 !!!我們缺少的是根據自己的意願來識別、擁抱和影響閉包的思維(劃重點) !!!閉包並不是什麼高大上的技術

Java程式設計之委託代理、內部類以及匿名內部類()

最近一直在看Java的相關東西,因為我們在iOS開發是,無論是Objective-C還是Swift中,經常會用到委託代理回撥,以及Block回撥或者說是閉包回撥。接下來我們就來看看Java語言中是如何實現委託代理回撥以及閉包回撥的。當然這兩個技術點雖然實現起來並不困難,但是,這回調在封裝一些公用元件時還是特別

Swift3.0通過傳遞引數 / @escaping

//載入請求資料 func loadData(completion: @escaping (_ result:[String]) -> ()) -> () { DispatchQueue.global().async {

JS函式和函式

一、閉包 閉包(closure)是Javascript語言的一個難點,也是它的特色,很多高階應用都要依靠閉包實現。閉包就是能夠讀取其他函式內部變數的函式。可以把閉包簡單理解成”定義在一個函式內部的函式”。 閉包有三個特性: 1.函式巢狀函式; 2.函式內

javascript深入理解js

bag 思考 2個 表達式 proto window對象 來看 連接 第一次 閉包(closure)是Javascript語言的一個難點,也是它的特色,很多高級應用都要依靠閉包實現。 一、變量的作用域 要理解閉包,首先必須理解Javascript特殊的變量作用域。

簡單理解js

array create 信息 我們 作用域 區別 這一 構造函數 彈窗 什麽是閉包?我們先來看一段代碼: function a() { var n = 0; function inc() { n++;

經典js----對《大部分人都會做錯的經典JS面試題》的理解

targe 什麽 mage 技術分享 alt 詳細 重新 ole blank 重新看js閉包的時候看到了《大部分人都會做錯的經典JS閉包面試題》,自己理解並記錄了下想法。很多部分博主已經講得很詳細了,只是後面的解釋部分文字有點繞。 原帖地址:http://web.jobb

【知識】深入理解js

nts 存在 window 依次 ner hat 再看 tex 程序 本文轉載: 一、變量的作用域 要理解閉包,首先必須理解Javascript特殊的變量作用域。 變量的作用域無非就是兩種:全局變量和局部變量。 Javascript語言的特殊之處,就在於函數內部可以直接讀取

js理解

就是 嵌套 return 狀態 參數 占用 style 例如 全局變量 為了完全理解這個老生常談的東西,查來查去,算是初步知道這是個什麽鬼,怎麽用,為什麽用 閉包: 外部函數定義的內部函數就是閉包。 閉包的作用及好處: 閉包給訪問外部函數定義的內部變量創造了

javascript深入理解js(轉)

erro 對象 anon 無法找到 否則 src 興趣 名稱 如圖所示 javascript深入理解js閉包 轉載 2010-07-03 作者: 我要評論 閉包(closure)是Javascript語言的一個難點,也是它的特色,很多高級應用都要依靠閉包

深入理解JS

為什麽 garbage 註意點 lec 行操作 直接 用處 最大 私有 閉包(closure)是Javacript語言的一個難點,也是它的特色,很多高級應用都要依靠閉包實現。 一、變量的作用域 要理解閉包,首先必須理解Javascript特殊的變量作用域。 變量的作用

淺談對js理解

閉包就是能夠讀取其他函式內部變數的函式。由於在javascript中,只有函式內部的子函式才能讀取區域性變數,所以閉包可以理解成“定義在一個函式內部的函式“。在本質上,閉包是將函式內部和函式外部連線起來的橋樑。(引用了自由變數的函式) function f1(){ var a=10;

JS理解(轉載)

      關於閉包,我曾經一直覺得它很討厭,因為它一直讓我很難搞,不過有句話怎麼說來著,叫做你越想要一個東西,就要裝作看不起它的樣子。所以,抱著這個態度,我終於擄獲了閉包。   首先來認識一下什麼是閉包,閉包,一共有三大特徵:    1 函式巢

帶你一分鐘理解JS——通俗易懂

網上關於閉包的文章有很多,但是大多數都使用了太多專業術語,不便於理解,我在這試著用通俗一點的語言解釋一下何為閉包。 什麼是閉包? 什麼是閉包?閉包是什麼? 先來看一段程式碼: function a(){ var n = 0; function inc() { n+

描述下你對js。面向對象、繼承的理解

apply prototype 滿足 編程範式 函數 details 內存 全局 訪問控制 1)閉包理解: 個人理解:閉包就是能夠讀取其他函數內部變量的函數; 使用閉包主要是為了設計私有的方法和變量。閉包的優點是可以避免全局變量的汙染,缺點是閉包會常駐內存,會增大內存使

描述下你對js。面向物件、繼承的理解

1)閉包理解:   個人理解:閉包就是能夠讀取其他函式內部變數的函式; 使用閉包主要是為了設計私有的方法和變數。閉包的優點是可以避免全域性變數的汙染,缺點是閉包會常駐記憶體,會增大記憶體使用量,使用不當很容易造成記憶體洩露。在js中,函式即閉包,只有函式才會產生作用域的概念 閉包有三

js深入理解

1.定義和理解 首先在高階程式設計中對於閉包概念是這樣定義的:“閉包是指有許可權訪問另一個函式作用域中的變數的函式。“ 意思就是函式a能訪問到函式b作用域下的變數那麼函式a就是閉包,在網路上有些文章指出閉包有兩個條件: 1.函式巢狀,內部函式要用到外部函式的區域性變數

js 理解

我們先看一下維基百科對於閉包的解釋 這裡我們先只描述下閉包的概念 在PHP、JavaScript、Ruby、 Python、Go、Lua、objective c、swift 以及Java(Java8及以上)等語言中都能找到對閉包不同程度的支援。 可能看了這個官方的解釋會讓你

js理解及例子

閉包概念: 1、閉包是指有權訪問另一個函式作用域中的變數的函式,建立閉包的最常見的方式就是在一個函式內建立另一個函式,通過另一個函式訪問這個函式的區域性變數。利用閉包可以突破作用鏈域,將函式內部的變數