關於vue中的 this 和vue封裝jsonp方法


 

關於vue中的 this

這是vue文檔里的原話:

所有的生命周期鈎子自動綁定 this 上下文到實例中,因此你可以訪問數據,對屬性和方法進行運算。這意味着你不能使用箭頭函數來定義一個生命周期方法 (例如 created: () => this.fetchTodos())。這是因為箭頭函數綁定了父上下文,因此 this 與你期待的 Vue 實例不同,this.fetchTodos 的行為未定義。

示例分析

示例定義了兩個message。一個是全局變量,即window.message,它的值為英文“Hello!”。另外一個是vue實例的數據message,它的值為中文的“你好!”。

運行結果如下

第一個輸出英文"Hello!”,第二個輸出中文“你好!”。這說明了showMessage1()里的this指的是window,而showMessage2()里的this指的是vue實例

showMessage1()

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

showMessage2()

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

 

綁定vue實例到this的方法

對setTimeout()里的匿名函數使用bind()綁定到vue實例的this。這樣在匿名函數內的this也為vue實例。

把vue實例的this賦值給另一個變量再使用

這里吧表示vue實例的this賦值給變量self。在使用到this的地方改用self引用。

vue.js中this為什么可以訪問屬性的屬性

因為el、data、computed都應該理解為Vue對象的聲明對象內容的關鍵字,而不是它的直接屬性。
那么在data聲明的就是它(vm本身)的數據屬性,在computed中聲明的就是它的計算屬性,在methods中聲明的就是它的方法。
vue 在初始話的過程中把 data 復制到了它的實例上
想看實現可以看源碼
https://github.com/vuejs/vue/blob/9f6c23f8c40969aad5d1f5c1407829ea4510a763/src/instance/internal/state.js#L79

 
        

vue中封裝jsonp方法

首先 肯定要安裝jsonp 模塊

終端運行npm install json安裝這個包 

然后引入jsonp函數

import myJsonp from jsonp

export defalut function Jsonp (url ,data , option) // data為傳入的參數對象,option就是原jsonp模板的opts

我們創建一個 jsonp的方法

 

接下來就是拼接參數函數了,同樣我們創建一個方法

 話不多說 直接上代碼

關於調用

 

 參數 寫上直接調就行了

 


免責聲明!

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



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