一.呼叫公共函式,this預設指向的為window
直接上幾個**1.
var a = 10;
function test()
test();
結果10
2.
var a =10;
function test()
function test1()
test();
結果:10 10
3.
var a = 10;
function test()
test();
結果: 5 10
結論:從上面的**的結果來看, this指向的物件為window,每當alert(this.a) 此時的值都是a=10;
在每次呼叫test()來看,都沒有給test繫結物件(除window外,因為 test(); <==> window.test();),故此時的this預設指向為window,而所有的公共變數都可以以這種
方式來寫:window.a = 10 <==> var a = 10
故每次的alert(this.a) <==> alert(window.a)
所以結果為 10
二.給函式繫結物件
直接上**
1.
var a = 10;
var b = function()
b.c = function()
b();
b.c();
結果: 10 20
2.
var a =10;
function test()
b = new test();
alert(test.a);
alert(b.a);
結果: 20 30
結論:**二1中第乙個this.a 仍然是指向window alert(this.a) <==>alert(window.a);
第二個this.a則指向b物件,因為函式是這麼定義的 b.c = function(){}; 所以該函式繫結了b物件(該函式的擁有者),故呼叫該函式b.c();函式中this指向b物件
alert(this.a); <==> alert(b.a);
**二2中的原理也是一樣
建立乙個b例項物件 test() 函式繫結的物件就是b(該函式的擁有者) 在函式test() this指向b,所有this.a <==> b.a
javascript this指標的陷阱
function backimg jqobj this.slideup function 像上面這樣的一段js backimg是乙個類。init是這個類的初始化函式,本意是呼叫初始化函式init時,註冊乙個雙擊事件,雙擊事件的執行函式是slideup。實際執行中發現slideup無法正確執行。經過f...
JavaScript this指向 學習
函式預編譯過程 this window 全域性作用域裡 this window obj.func func 裡的this指向obj 誰呼叫 this就指向誰 var name 222 var a var fun a.say fun 在全域性執行 沒人呼叫 this指向 window a.say 在a...
javascript this 小知識點
函式在被呼叫的時候會意外置受兩個引數 this和argument,其中this的值跟取決於函式的呼叫模式 1,方法呼叫模式 o.a this指的o 2,函式呼叫模式 a this指的windows 3,構造器呼叫模式 new a this為a的例項物件 var foo var bar 當進入上下文時...