摘要:本文將全面的,詳細(xì)解析call方法的實(shí)現(xiàn)原理
本文分享自華為云社區(qū)《關(guān)于 JavaScript 中 call 方法的實(shí)現(xiàn),附帶詳細(xì)解析!》,作者:CoderBin。
我們提供的服務(wù)有:網(wǎng)站制作、成都網(wǎng)站建設(shè)、微信公眾號(hào)開發(fā)、網(wǎng)站優(yōu)化、網(wǎng)站認(rèn)證、瑪沁ssl等。為千余家企事業(yè)單位解決了網(wǎng)站和推廣的問題。提供周到的售前咨詢和貼心的售后服務(wù),是有科學(xué)管理、有技術(shù)的瑪沁網(wǎng)站制作公司
本文將全面的,詳細(xì)解析call方法的實(shí)現(xiàn)原理,并手寫出自己的call方法,相信看完本文的小伙伴都能從中有所收獲。
調(diào)用函數(shù),可傳入?yún)?shù),改變this指向
1. 邊界判斷
2. 將調(diào)用的函數(shù)設(shè)置為對象(傳入的context)的方法(改變this指向)
3. 調(diào)用函數(shù),得到返回值,并返回
/** * !實(shí)現(xiàn) binCall() 方法 * @param {*} context 綁定的對象 * @param {...any} args 剩余參數(shù) * @returns */ Function.prototype.binCall= function(context, ...args) { if (typeof this !== 'function') console.error('type Error'); // 1 context = (context!==null && context!==undefined) ? Object(context) : window context.fn= this // 2 const result = context.fn(...args) // 3 delete context.fn; return result }