vue中的this指向問題


1、※  對於普通函數(包括匿名函數),this指的是直接的調用者,在非嚴格模式下,如果沒有直接調用者,this指的是window。showMessage1()里setTimeout使用了匿名函數,this指向window。

2、※  箭頭函數是沒有自己的this,在它內部使用的this是由它定義的宿主對象?決定。showMessage2()里定義的箭頭函數宿主對象為vue實例,所以它里面使用的this指向vue實例。

注:
【普通函數的 this
      普通函數的 this 是由動態作用域決定,它總指向於它的直接調用者。具體可以分為以下四項:
this 總是指向它的直接調用者, 例如 obj.func() ,那么func()里的 this 指的是obj。
在默認情況(非嚴格模式,未使用  'use strict' ),如果函數沒有直接調用者, this為window
在嚴格模式下,如果函數沒有直接調者, this 為undefined
使用call,apply,bind綁定的, this 指的是綁定的對象
 
1)全局函數中的this指向window
2)對象中的方法(函數)中的this,指向對象,理解:obj.m=function(){},m和fn等價,因此調用m也相當於調用fn,原理同3)
3)構造函數中的this指向調用該構造函數的實例對象
4)特殊this指向:
箭頭函數沒有綁定this,this繼承自外圍作用域,理解:查看上一層級的函數的this的指向,繼承它!!
5)綁定this指向:

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM