箭頭函數(shù)是沒有自己的this,在它內(nèi)部使用的this是由它定義的宿主對(duì)象決定
let self = this;
setTimeout(() => {
self.loading();
}, 1000);
如果我們直接使用this獲取該函數(shù)
setTimeout(this.loading(), 1000);
這種寫法在vue里面可能會(huì)調(diào)用失敗,為啥呢?
對(duì)于普通函數(shù)(包括匿名函數(shù)),this指的是直接的調(diào)用者,在非嚴(yán)格模式下,如果沒有直接調(diào)用者,this指的是window
vue this指向問題
箭頭函數(shù)沒有自己的this, 它的this是繼承而來; 默認(rèn)指向在定義它時(shí)所處的對(duì)象(宿主對(duì)象),而不是執(zhí)行時(shí)的對(duì)象, 定義它的時(shí)候,可能環(huán)境是window; 箭頭函數(shù)可以方便地讓我們?cè)?setTimeout ,setInterval中方便的使用this。
使用call,apply,bind綁定的,this指的是綁定的對(duì)象
var self = this;
setTimeout(function() {
document.getElementById("id1").innerText = self.message; //改為self
}.bind(this), 10)