js中this的指向

2021-07-10 08:39:49 字數 2297 閱讀 3584

lang="en">

charset="utf-8">

深入理解thistitle>

head>

//它代表函式執行時,自動生成的乙個內部物件,只能在函式內部使用。

//隨著函式使用場合的不同,this的值會發生變化。

//但是有乙個總的原則,那就是this指的是,呼叫函式的那個物件。

//demo1

function

demo1

() //呼叫

demo1();

//解析:

//就是this指的是,呼叫函式的那個物件。

//demo1函式是被window呼叫的,所以this就指向了window

輸出undefined因為this指向了window,

//在window下沒有test1屬性(函式內部可以訪問函式外部變數,反之不可(閉包除外));

//呼叫方式 demo1();等價於 window.demo1();

//demo2

//字面向量建立函式

var parent=

}//呼叫

// parent.fun();

//解析

//就是this指的是,呼叫函式的那個物件。(既呼叫fun函式的物件)

//上面 點 呼叫方式看出 fun函式是通過parent呼叫的,所以this指向了parent

//在parent也就是this下面存在變數test2變數,所以將其輸出

//demo3

var demo3=}}

//呼叫

demo3.fun.func();

//解析

//就是this指的是,呼叫函式的那個物件。(既呼叫func函式的物件)

//上面 點 呼叫方式看出 func函式是通過 demo3.fun呼叫的,所以this指向了fun

//在fun也就是this下面存在變數de變數,所以將其輸出

//呼叫方式 demo3.fun.func();等價於 window.demo3.fun.func();

//demo5

var demo5=}}

//呼叫

var exe=demo5.fun.func;

exe();

//解析

//demo5與demo4,不同之處在於呼叫函式的方式

//demo5呼叫方式分為兩步

//var exe=demo5.fun.func; 將func函式的執行權利賦值給了exe變數,

//注意 因為var exe 相當與 window.exe exe處在window的作用域下面

//通過exe來執行,this的指向就變成了window

//呼叫方式 exe();等價於 window.exe();

//demo6

//建構函式

function

demo6

() //呼叫

var demo6faild=new demo6();

console.log(demo6faild.test6);//zyn

//解析

//因為用了new關鍵字就是建立乙個物件例項

//並且將物件例項賦值給demo6faild,所以this指向了demo6faild(相當於demo6)

//在demo6和demo6faild也就是this下面存在變數test6變數,所以輸出zyn

//demo7

function

demo7

(); }

var de6=new demo7();

console.log(de6.test7);//undefined

function

demo7

(); }

console.log(de6.test7);//undefined

function

demo7

() console.log(de6.test7);//zyn

function

demo7

() console.log(de6.test7);//zyn

function

demo7

() console.log(de6.test7);//zyn

//解析

//如果返回值是乙個物件,那麼this指向的就是那個返回的物件,

// 如果返回值不是乙個物件那麼this還是指向函式的例項。

script>

body>

html>

js中this的指向

this的指向在函式定義的時候是確定不了的,只有函式執行的時候才能確定this到底指向誰,實際上this的最終指向的是那個呼叫它的物件 functiona a 按照我們上面說的this最終指向的是呼叫它的物件,這裡的函式a實際是被window物件所點出來的,下面的 就可以證明。var o o.fn ...

js中的this指向

首先必須要說的是,this的指向在函式定義的時候是確定不了的,只有函式執行的時候才能確定this到底指向誰,實際上this的最終指向的是那個呼叫它的物件 這句話有些問題,後面會解釋為什麼會有問題,雖然網上大部分的文章都是這樣說的,雖然在很多情況下那樣去理解不會出什麼問題,但是實際上那樣理解是不準確的...

js中this的指向

this關鍵字代表當前正在執行的方法的物件,如果沒有當前方法,則是指全域性變數。就是說this代表呼叫該方法的物件的引用。直接列印 console.log this window function宣告函式 function bar bar window function宣告函式賦給變數 varbar...