JS的this指向簡單說就是誰呼叫指向誰,但在使用時往往分不清誰進行了呼叫,下面會分享,我平時總結的this指向
在全域時this的指向時window,
在函式里面時,誰呼叫函式,this就指向誰,
舉例:
function fn1(){
console.log(this)
}
fn1()
這時呼叫函式的是window,所以this也指向window
let obj={
a:function fn2(){
console.log(this)
}
}
obj.a()
這時呼叫函式的是obj這個物件,所以this也指向obj這個物件
平時作業中常用的一種方式是把this賦值給一個變數,這樣可以幫助我們更好掌握this的指向,以免發生錯誤
let vm=this
當然,我們也可以使用bind、apply、call這三種方法直接改變this指向
let obj={a:1}
function fn1(a,b){
console.log(this)
console.log(a,b)
}
fn1.bind(obj)(1,2)
想要傳函式的引數時要在后面再加上一個小括號
function fn1(a,b){
console.log(this)
console.log(a,b)
}
fn1.apply(obj,[1,2])
apply的第一個引數是this的指向,后面需要傳遞函式的引數,要以陣列的型別寫
function fn1(a,b){
console.log(this)
console.log(a,b)
}
fn1.call(obj,1,2)
apply的第一個引數是this的指向,后面需要傳遞函式的引數,直接寫就行
以上就是我對JS指向方面的一些理解
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/397985.html
標籤:其他
上一篇:如何避免java.lang.NullPointerException
下一篇:{"status":400,"message":"missingclientid"}使用node-fetch時的回應
