bind也是處理this指向的,但是它是預處理this的指向,函式呼叫之後,只是預處理了裡面的this,不會像call一樣自動讓fn執行。要想讓fn執行,我們需要再次呼叫它的返回值:
let obj =
;function
fn(x,y)
1 2}var res=fn.
bind
(obj,1,
2);res()
;
也可以通過繫結事件來執行:
ele.onclick=fn.
bind
(obj,1,
2);
接下來簡單封裝一下原始碼:
function
fn(a, b, c, d)
let obj =
; function.prototype.
mybind
=function
(context,
...arg1)
}let res = fn.
mybind
(obj,1,
2);// bind執行會返回乙個新的函式,以後執行這個新函式的時候,在新函式內部會讓fn執行
console.
log(
res(3,
4));
var obj=
function
fn(x,y,z)
console.
log(x)
;// 1
console.
log(y)
;// 2
console.
log(z)
;// undefined
}fn.
(obj,[1
,2],
3);// 第三個實參就開始接受不到
如有不對,歡迎指出問題所在,定當認真修改。 ConcurrentHashMap的原始碼分析
put final v putval k key,v value,boolean onlyifabsent 在上一步的else if中 f 不為null時,則判斷f的hash值是否為moved,即 1,如果為 1,表示正在擴容 else if fh f.hash moved 協助資料遷移 tab h...
DispatcherServlet的原始碼和流程分析
1 自動配置dispatcherservlet和dispatcherservletregistry 2 註冊dispatcherservlet到servletcontext 3 初始化mvc的元件 handler執行完成後,向dispatcherservlet 返回乙個modelandview物件 ...
Mybatis中Logging模組的原始碼分析
週末又來到了公司吹吹空調,順便記錄下mybatis的點點滴滴。首先mybatis不定義日誌系統,完全依賴於第三方系統完成日誌記錄,利用介面卡模式完成實際操作,原始碼如下 1 定義乙個log介面,具有如下方法 public inte ce log2 然後引入第三方日誌,比如 loggingimpl,實...