這篇文章主要介紹了js如何實(shí)現(xiàn)apply函數(shù),具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)公司 - 電信內(nèi)江機(jī)房,四川服務(wù)器租用,成都服務(wù)器租用,四川網(wǎng)通托管,綿陽(yáng)服務(wù)器托管,德陽(yáng)服務(wù)器托管,遂寧服務(wù)器托管,綿陽(yáng)服務(wù)器托管,四川云主機(jī),成都云主機(jī),西南云主機(jī),電信內(nèi)江機(jī)房,西南服務(wù)器托管,四川/成都大帶寬,服務(wù)器機(jī)柜,四川老牌IDC服務(wù)商
apply 函數(shù)的實(shí)現(xiàn)步驟:
判斷調(diào)用對(duì)象是否為函數(shù),即使我們是定義在函數(shù)的原型上的,但是可能出現(xiàn)使用 call 等方式調(diào)用的情況。
判斷傳入上下文對(duì)象是否存在,如果不存在,則設(shè)置為 window 。
將函數(shù)作為上下文對(duì)象的一個(gè)屬性。
判斷參數(shù)值是否傳入
使用上下文對(duì)象來(lái)調(diào)用這個(gè)方法,并保存返回結(jié)果。
刪除剛才新增的屬性
返回結(jié)果
// apply 函數(shù)實(shí)現(xiàn)Function.prototype.myApply = function(context) { // 判斷調(diào)用對(duì)象是否為函數(shù) if (typeof this !== "function") { throw new TypeError("Error"); } let result = null; // 判斷 context 是否存在,如果未傳入則為 window context = context || window; // 將函數(shù)設(shè)為對(duì)象的方法 context.fn = this; // 調(diào)用方法 if (arguments[1]) { result = context.fn(...arguments[1]); } else { result = context.fn(); } // 將屬性刪除 delete context.fn; return result;};
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“js如何實(shí)現(xiàn)apply函數(shù)”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!