var myobject = ());
}};myobject.func();
程式的輸出是什麼?
依次輸出bar bar undefined bar
理解關鍵:方法/函式是由誰(物件)
呼叫
的,方法/函式內部的這就是指向誰(該物件);
注意:被誰
呼叫,
不是處於誰的作用域,即使在作用域
1,func是由myobject呼叫的,這個指向myobject。
2,自我指向myobject的,
相當於
myobject的的這個的副本。
3,這個立即執行匿名函式表示式(iife)是由視窗呼叫的,這個指向視窗。
4,iife的作用域處於myobject.func的作用域中,本作用域找不到自變數,沿著作用域鏈向上查詢自變數,找到了指向myobject物件的自我。
按順序依次分析:
1.第乙個this.foo輸出吧,因為當前該指向物件myobject的。
2.第二個self.foo輸出吧,因為自己是這個的副本,同指向myobject的物件。
3.第三個this.foo輸出未定義,因為這個iife(立即執行函式表示式)中的這個指向視窗。
4.第四個self.foo輸出吧,因為這個匿名函式所處的上下文中沒有自我,所以通過作用域鏈向上查詢,從包含它的父函式中找到了指向myobject的物件的自我。this是不向上找的。
JSONP跨域的乙個例子
最近的專案碰到了跨域的問題。之前有關於跨域一直研究得不是很深刻。剛好借這次機會,好好看了看。有看到jsonp的方法,例子如下 test.html 這裡只是做測試,以後可以使用php或者jsp 動態生成 這裡就不多說了 cb ps第二個頁面 html js function cb result fun...
乙個關於JS作用域鏈的例子
乙個關於js作用域鏈的例子,如下 1 var x 10 function foo function 執行結果 2 var x 10 function foo function 執行結果 簡單分析 兩段 唯一的區別是第6行,即匿名函式中對變數x的賦值。1,var x 20,2,x 20。在函式建立時,...
LineDDA的乙個例子
unit unit1 inte ce uses windows,messages,sysutils,variants,classes,graphics,controls,forms,dialogs,extctrls,stdctrls,buttons type tfmmain class tform ...