JavaScript this個人理解

2021-06-26 21:46:01 字數 1329 閱讀 7157

一.呼叫公共函式,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 當進入上下文時...