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