日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

Bind、Call、Apply的區(qū)別?如何實現bind

來源: 責編: 時間:2024-03-18 09:41:33 205觀看
導讀bind、call、apply的作用?bind, call, 和 apply 是 JavaScript 中非常有用的方法,它們主要用于改變函數的執(zhí)行上下文以及傳遞參數。bind:bind()方法創(chuàng)建一個新的函數,該函數的this關鍵字被綁定到指定的對象,同時還可以提

bind、call、apply的作用?

bind, call, 和 apply 是 JavaScript 中非常有用的方法,它們主要用于改變函數的執(zhí)行上下文以及傳遞參數。EDl28資訊網——每日最新資訊28at.com

  • bind:bind()方法創(chuàng)建一個新的函數,該函數的this關鍵字被綁定到指定的對象,同時還可以提供一系列參數。這對于在事件處理函數、定時器或回調函數中綁定上下文非常有用。
const obj = {  x: 42};function getX(y) {  return this.x + y;}const boundGetX = getX.bind(obj);console.log(boundGetX(2)); // 輸出 44
  • call:call()方法調用一個函數,允許你指定函數執(zhí)行時的上下文(this),并傳遞一系列參數作為函數的參數。這在需要立即調用函數并指定上下文的情況下非常有用。
const obj = {  x: 42};function getX(y) {  return this.x + y;}console.log(getX.call(obj, 2)); // 輸出 44
  • apply:apply()方法調用一個函數,允許你指定函數執(zhí)行時的上下文(this),同時傳遞一個數組或類數組對象作為函數的參數。這在需要傳遞參數數組的情況下非常有用。
const obj = {  x: 42};function getX(y) {  return this.x + y;}console.log(getX.apply(obj, [2])); // 輸出 44

bind、call、apply的區(qū)別?

bind, call, 和 apply 是 JavaScript 中用于處理函數執(zhí)行上下文和參數傳遞的方法,它們有著不同的特點和用途。EDl28資訊網——每日最新資訊28at.com

  • bind()

bind() 方法創(chuàng)建一個新的函數,該函數的 this 關鍵字被綁定到指定的對象,并且提供了一系列參數。不會立即執(zhí)行函數,而是返回一個新的函數,可以稍后調用。EDl28資訊網——每日最新資訊28at.com

const obj = {  x: 42};function getX(y) {  return this.x + y;}const boundGetX = getX.bind(obj);console.log(boundGetX(2)); // 輸出 44
  • call()

call() 方法調用一個函數,允許你顯式指定函數執(zhí)行時的上下文(this),并且可以傳遞一系列參數作為函數的參數。立即執(zhí)行函數。EDl28資訊網——每日最新資訊28at.com

const obj = {  x: 42};function getX(y) {  return this.x + y;}console.log(getX.call(obj, 2)); // 輸出 44
  • apply()

apply() 方法調用一個函數,允許你顯式指定函數執(zhí)行時的上下文(this),同時傳遞一個數組或類數組對象作為函數的參數。立即執(zhí)行函數。EDl28資訊網——每日最新資訊28at.com

const obj = {  x: 42};function getX(y) {  return this.x + y;}console.log(getX.apply(obj, [2])); // 輸出 44

區(qū)別總結:EDl28資訊網——每日最新資訊28at.com

  • 參數傳遞方式:

bind() 接受一系列參數,返回一個新函數。EDl28資訊網——每日最新資訊28at.com

call() 和 apply() 接受一個參數列表或數組作為參數。EDl28資訊網——每日最新資訊28at.com

  • 執(zhí)行時機:
  • bind() 不會立即執(zhí)行函數,而是返回一個新的綁定函數。
  • call() 和 apply() 立即執(zhí)行函數。
  • 返回值:
  • bind() 返回一個新的函數。
  • call() 和 apply() 直接執(zhí)行函數,并返回執(zhí)行結果。

實現

下面是一個簡單的 bind 函數的實現,該實現基于了對 JavaScript 的原型鏈和閉包的理解:EDl28資訊網——每日最新資訊28at.com

Function.prototype.myBind = function (context) {  const fn = this; // 保存原函數  const args = Array.prototype.slice.call(arguments, 1); // 獲取除第一個參數(context)以外的所有參數  return function () { // 返回一個函數,這個函數會被當做綁定后的函數調用    const bindArgs = Array.prototype.slice.call(arguments); // 獲取 bind 方法的參數    return fn.apply(context, args.concat(bindArgs)); // 在 context 上執(zhí)行原函數,并傳入所有參數  };};// 示例const obj = {  x: 42};function getX(y) {  return this.x + y;}const boundGetX = getX.myBind(obj);console.log(boundGetX(2)); // 輸出 44

在這個實現中,通過 Function.prototype 對象擴展了一個 myBind 方法。在 myBind 方法內部,首先保存了原函數 fn,然后提取除第一個參數(要綁定的上下文)之外的所有參數到 args 數組中。然后,我們返回了一個新的函數,這個函數會在指定的上下文 context 上執(zhí)行原函數,并將原始的參數與綁定的參數合并起來傳遞給原函數。EDl28資訊網——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-76520-0.htmlBind、Call、Apply的區(qū)別?如何實現bind

聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 徹底理解異步編程!你理解了嗎?

下一篇: 一個熟悉又陌生的關鍵字:volatile

標簽:
  • 熱門焦點
  • vivo TWS Air開箱體驗:真輕 臻好聽

    在vivo S15系列新機的發(fā)布會上,vivo的最新款真無線藍牙耳機vivo TWS Air也一同發(fā)布,本次就這款耳機新品給大家?guī)硪粋€簡單的分享。外包裝盒上,vivo TWS Air保持了vivo自家產
  • K8S | Service服務發(fā)現

    一、背景在微服務架構中,這里以開發(fā)環(huán)境「Dev」為基礎來描述,在K8S集群中通常會開放:路由網關、注冊中心、配置中心等相關服務,可以被集群外部訪問;圖片對于測試「Tes」環(huán)境或者
  • 企業(yè)采用CRM系統的11個好處

    客戶關系管理(CRM)軟件可以為企業(yè)提供很多的好處,從客戶保留到提高生產力。  CRM軟件用于企業(yè)收集客戶互動,以改善客戶體驗和滿意度?! RM軟件市場規(guī)模如今超過580
  • 使用Webdriver-manager解決瀏覽器與驅動不匹配所帶來自動化無法執(zhí)行的問題

    1、前言在我們使用 Selenium 進行 UI 自動化測試時,常常會因為瀏覽器驅動與瀏覽器版本不匹配,而導致自動化測試無法執(zhí)行,需要手動去下載對應的驅動版本,并替換原有的驅動,可能還
  • 每天一道面試題-CPU偽共享

    前言:了不起:又到了每天一到面試題的時候了!學弟,最近學習的怎么樣啊 了不起學弟:最近學習的還不錯,每天都在學習,每天都在進步! 了不起:那你最近學習的什么呢? 了不起學弟:最近在學習C
  • 2023年,我眼中的字節(jié)跳動

    此時此刻(2023年7月),字節(jié)跳動從未上市,也從未公布過任何官方的上市計劃;但是這并不妨礙它成為中國最受關注的互聯網公司之一。從2016-17年的抖音強勢崛起,到2018年的“頭騰
  • 微博大門常打開,迎接海外畫師漂洋東渡

    作者:互聯網那些事“起猛了,我能看得懂日語了”。“為什么日本人說話我能聽懂?”“中文不像中文,日語不像日語,但是我竟然看懂了”…&hell
  • 華為發(fā)布HarmonyOS 4:更好玩、更流暢、更安全

    在8月4日的華為開發(fā)者大會2023(HDC.Together)大會上,HarmonyOS 4正式發(fā)布。自2019年發(fā)布以來,HarmonyOS一直以用戶為中心,經歷四年多的發(fā)展HarmonyOS已
  • 與兆芯合作 聯想推出全新旗艦版筆記本電腦開天N7系列

    聯想與兆芯合作推出全新聯想旗艦版筆記本電腦開天 N7系列。這個系列采用兆芯KX-6640MA處理器平臺,KX-6640MA 處理器是采用了陸家嘴架構,16nm 工藝,4 核 4 線
Top 主站蜘蛛池模板: 梧州市| 兴文县| 沅陵县| 芜湖县| 抚顺市| 建昌县| 巩义市| 鱼台县| 海安县| 澄迈县| 曲阳县| 岳西县| 革吉县| 沧源| 确山县| 元阳县| 应用必备| 潜江市| 弥勒县| 镇坪县| 琼结县| 永昌县| 富民县| 札达县| 临潭县| 乌苏市| 望城县| 东光县| 澜沧| 茶陵县| 清河县| 蓬安县| 鄢陵县| 承德市| 西峡县| 临汾市| 南召县| 信宜市| 蒙自县| 大城县| 孝义市|