真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

詳解JS中 call 方法的實(shí)現(xiàn)

摘要:本文將全面的,詳細(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方法,相信看完本文的小伙伴都能從中有所收獲。

call 方法的實(shí)現(xiàn)

1.函數(shù)作用

調(diào)用函數(shù),可傳入?yún)?shù),改變this指向

2.總體步驟

  1. 邊界判斷(this,context)
  2. 將調(diào)用的函數(shù)設(shè)置為對象(傳入的context)的方法(改變this指向)
  3. 調(diào)用函數(shù),得到返回值,并返回

3. 詳細(xì)步驟

1. 邊界判斷

  • 判斷當(dāng)前 this 是否為一個(gè)函數(shù),否則返回錯(cuò)誤消息
  • 判斷傳入的 context 參數(shù)是否存在,存在則使用 Object() 轉(zhuǎn)換為對象賦給 context,否則將 window 賦值給 context

2. 將調(diào)用的函數(shù)設(shè)置為對象(傳入的context)的方法(改變this指向)
3. 調(diào)用函數(shù),得到返回值,并返回

  • 調(diào)用函數(shù),得到結(jié)果
  • 刪除 context 身上的 fn 函數(shù)
  • 返回結(jié)果

4. 代碼實(shí)現(xiàn)

/**
 * !實(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
}

網(wǎng)頁名稱:詳解JS中 call 方法的實(shí)現(xiàn)
分享地址:http://weahome.cn/article/dsojgdc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部