javascript
你不知道的JS(this)---#
默認(rèn)綁定
------------
隱式綁定
------------
顯式綁定
(apply,call)
硬綁定解決綁定丟失問題(bind)
------------
new綁定
new調(diào)用函數(shù)時(shí)(構(gòu)造函數(shù)調(diào)用時(shí))發(fā)生步驟
1.創(chuàng)造一個(gè)全新的對象
2.這個(gè)新對象會被執(zhí)行[[Prototype]]連接
3.這個(gè)新對象會綁定到函數(shù)調(diào)用的this
4.如果函數(shù)沒有返回其他對象,自動(dòng)返回這個(gè)新對象
new會改變硬綁定函數(shù)的this,使用new硬綁定函數(shù)主要是為了預(yù)先設(shè)置函數(shù)的一些參數(shù)
------------
判斷this
1.是否在new中調(diào)用,this=>新創(chuàng)建的對象
2.時(shí)候通過apply,call或者硬綁定,this=>指定對象
3.時(shí)候有某個(gè)上下文對象中調(diào)用obj.foo(),this=>obj
4.this=>window(underfined)
?
================
以null,underfunded傳入call。。會在調(diào)用時(shí)候被忽略,會把this默認(rèn)綁定到全局對象
更安全的做法是使用Object.create(null)
==================
箭頭函數(shù)的綁定無法被修改
轉(zhuǎn)載于:https://www.cnblogs.com/lemonib/p/10079804.html
總結(jié)
以上是生活随笔為你收集整理的你不知道的JS(this)---#的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: sonarqube扫描安卓代码
- 下一篇: 【数据结构 JavaScript版】-