摘要:刪除方法,返回。處理參數(shù),返回一個(gè)閉包判斷是否為構(gòu)造函數(shù)調(diào)用,如果是則調(diào)用調(diào)用當(dāng)前函數(shù)如果不是,則用,將和參數(shù)傳入?yún)⒖?/p>
apply
Function.prototype.myApply = function(context,args){ // 如果是調(diào)用自己,則返回undefined if(this===Function.prototype) return false; context=context || window; var fn = Symbol(), result; context[fn]=this; if(Array.isarray(args)){ result = context[fn](...args); }else{ result = context[fn](); } delete context[fn]; return result; }
1.如果是調(diào)用自己,則返回undefined
2.判斷context是否存在,不存在則調(diào)用window
3.新增一個(gè)Symbol屬性,賦值給context
4.將當(dāng)前函數(shù)賦值給這個(gè)屬性
5.判斷傳參是否數(shù)組
6.如果是,則將其余的參數(shù)傳入執(zhí)行方法。如果否,則直接調(diào)用方法。
7.刪除方法,返回。
Function.prototype.myCall= function(context=window,...args){ if(this === Function.prototype) return undefined; context= context || window var fn = Symbol(), result; context[fn] = this; result = context[fn](...args) delete context[fn] return result; }
1.如果是調(diào)用自己,則返回undefined
2.判斷context是否存在,不存在則調(diào)用window
3.新增一個(gè)Symbol屬性,賦值給context
4.將當(dāng)前函數(shù)賦值給這個(gè)屬性
5.將其余的參數(shù)傳入執(zhí)行方法
6.刪除方法,返回。
Function.prototype.myBind = function(context=window,...args){ if(this === Function.prototype) return undefined; const _this = this ; return function F(...args2){ if(this instanceof F){ return new _this(...args,...args2) } _this.apply(context,args.concat(...args2)) } }
1.處理參數(shù),返回一個(gè)閉包
2.判斷是否為構(gòu)造函數(shù)調(diào)用,如果是則調(diào)用new調(diào)用當(dāng)前函數(shù)
3.如果不是,則用apply,將context和args參數(shù)傳入
參考
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/110017.html
摘要:但是在調(diào)用函數(shù)值執(zhí)行之后并沒有達(dá)到我們想要的效果。解析在這里我們?yōu)槊恳粋€(gè)的事件綁定了一個(gè)匿名函數(shù),這個(gè)匿名函數(shù)就形成了一個(gè)閉包。這樣我們就為每個(gè)的事件的匿名函數(shù),都保存下了自己閉包變量。 博客原址 理解 Javascript中的this 基于不同的調(diào)用方式this的指向也會(huì)有所不同,調(diào)用方式大致有如下幾種: 調(diào)用方式 表達(dá)式 構(gòu)造函數(shù)調(diào)用 new Foo(); 對(duì)象方法...
摘要:在嚴(yán)格模式下調(diào)用函數(shù)則不影響默認(rèn)綁定?;卣{(diào)函數(shù)丟失綁定是非常常見的。因?yàn)橹苯又付ǖ慕壎▽?duì)象,稱之為顯示綁定。調(diào)用時(shí)強(qiáng)制把的綁定到上顯示綁定無(wú)法解決丟失綁定問題。 (關(guān)注福利,關(guān)注本公眾號(hào)回復(fù)[資料]領(lǐng)取優(yōu)質(zhì)前端視頻,包括Vue、React、Node源碼和實(shí)戰(zhàn)、面試指導(dǎo)) 本周正式開始前端進(jìn)階的第三期,本周的主題是this全面解析,今天是第9天。 本計(jì)劃一共28期,每期重點(diǎn)攻克一個(gè)面試重...
摘要:基于函數(shù)進(jìn)行調(diào)用的,用來(lái)確保函數(shù)是在指定的值所在的上下文中調(diào)用的。添加私有函數(shù)目前上面為類庫(kù)添加的屬性都是公開的,可以被隨時(shí)修改。以基于的富應(yīng)用開發(fā)為主要學(xué)習(xí)資料。 控制類庫(kù)的作用域 在類和實(shí)例中都添加proxy函數(shù),可以在事件處理程序之外處理函數(shù)的時(shí)候保持類的作用域。下面是不用proxy的辦法: var Class = function(parent){ var klas...
摘要:函數(shù)別名是全局對(duì)象的屬性顯式綁定一個(gè)小栗子和第一個(gè)參數(shù)是一個(gè)對(duì)象,它們會(huì)把這個(gè)對(duì)象綁定到,接著在調(diào)用函數(shù)時(shí)指定這個(gè)。 今天總結(jié)一下this。 誤解 熟悉Java或者其他語(yǔ)言的同學(xué)看到this會(huì)想當(dāng)然的認(rèn)為this指向函數(shù)本身,然而在JavaScript中并不是這樣子。 function func(){ console.log(this.index) } func.index ...
摘要:本文章記錄本人在學(xué)習(xí)中看書理解到的一些東西,加深記憶和并且整理記錄下來(lái),方便之后的復(fù)習(xí)。但是在開發(fā)的過程中,并不是所有的代碼復(fù)用都會(huì)使用到繼承。而且整個(gè)代碼都無(wú)法按照預(yù)期來(lái)運(yùn)行。為了修復(fù)綁定對(duì)象與方法之間的關(guān)系。 本文章記錄本人在學(xué)習(xí) JavaScript 中看書理解到的一些東西,加深記憶和并且整理記錄下來(lái),方便之后的復(fù)習(xí)。 js 中復(fù)用代碼 說道代碼復(fù)用,一般都會(huì)涉及到對(duì)...
閱讀 1741·2021-11-17 09:33
閱讀 1221·2021-11-12 10:36
閱讀 2498·2019-08-30 15:54
閱讀 2509·2019-08-30 13:14
閱讀 2999·2019-08-26 14:05
閱讀 3373·2019-08-26 11:32
閱讀 3107·2019-08-26 10:09
閱讀 3083·2019-08-26 10:09