千鋒教育JavaScript全套視頻教程(10天學會Js,前端javascrip

this關鍵字
- 介紹
- this是JS中的一個關鍵字
- this表示的是一個指向,在不同情況下 this的指向是不同的
this的指向:
- 在全局中,this指向的是 window對象
- 定時器中的this,指向window對象。
- 因為定時器是window對象的方法,不管定時器寫在哪里,哪怕是嵌套在obj里面的函數(shù)里,都指向window對象
- 對象方法中的this,指向?qū)ο蟊旧?/li>
- 在普通函數(shù)中,this指向的是 函數(shù)的調(diào)用者(對象)
- 在事件處理函數(shù)中,this指向的是事件源
改變this指向
call()
- 語法:函數(shù)名.call()
- 可以附加在函數(shù)調(diào)用后面使用,可以忽略函數(shù)本身的this指向,制定一個新的this指向
- 參數(shù)
- 參數(shù)1:給函數(shù)指定 改變的this指向
- 從第二個參數(shù)開始,后面的每個參數(shù)依次是函數(shù)的實參
- 特點:調(diào)用call()方法之后,會立即執(zhí)行函數(shù)
apply()
- 語法:函數(shù)名.call()
- 可以附加在函數(shù)調(diào)用后面使用,可以忽略函數(shù)本身的this指向,制定一個新的this指向
- 參數(shù)
- 參數(shù)1:給函數(shù)指定 改變的this指向
- 參數(shù)2:是一個數(shù)組,數(shù)組里面的每一項值 依次是函數(shù)的實參
- 特點:調(diào)用apply()方法之后,會立即執(zhí)行函數(shù)
bind()
- 語法:函數(shù)名.bind()
- 可以附加在函數(shù)調(diào)用后面使用,可以忽略函數(shù)本身的this指向,制定一個新的this指向
- 參數(shù)
- 參數(shù)1:給函數(shù)指定 改變的this指向
- 從第二個參數(shù)開始,后面的每個參數(shù)依次是函數(shù)的實參
- 特點:調(diào)用bind()方法之后 不會立即執(zhí)行函數(shù) 而是返回一個 改變了this指向的函數(shù)
- 使用場景:在函數(shù)改變了this指向,但是不需要立刻執(zhí)行結果時;比如在事件處理函數(shù)中
總結 call()、apply()和bind()的區(qū)別
- call()和apply()會立即執(zhí)行函數(shù)
- bind()不會立即執(zhí)行函數(shù)
call()和apply()在傳參方式上略有區(qū)別,call是單個傳參,apply是利用數(shù)組傳參。都可以接收多個參數(shù)
標簽: