Javascript 編程基礎(4)函數 | 4.3、apply() 與 call() 方法

文章目錄

  • 一、`apply()` 與 `call()` 方法
    • 1、核心概念
      • 1.1、`call()` 方法
      • 1.2、`apply()` 方法
    • 2、使用示例
      • 2.1、基本用法
      • 2.2、處理 `this` 指向問題
    • 3、`call()` 與 `apply()` 的區別

一、apply()call() 方法

apply()call() 都是 JavaScript 函數對象的方法,用于顯式設置函數執行時的 this并調用函數。這兩個方法功能相似,主要區別在于參數傳遞方式。

1、核心概念

1.1、call() 方法

function.call(thisArg, arg1, arg2, ...)
  • 第一個參數:指定函數內 this 的值
  • 后續參數:逐個傳遞函數參數

1.2、apply() 方法

function.apply(thisArg, [argsArray])
  • 第一個參數:指定函數內 this 的值
  • 第二個參數:以數組或類數組形式傳遞參數

2、使用示例

2.1、基本用法

function introduce(lang, experience) {console.log(`${this.name} 開發 ${lang} ${experience}`);
}const dev = { name: '張三' };// call 方式
introduce.call(dev, 'JavaScript', 5); 
// 輸出:"張三 開發 JavaScript 5 年"// apply 方式
introduce.apply(dev, ['Python', 3]);
// 輸出:"張三 開發 Python 3 年"

2.2、處理 this 指向問題

const obj = {value: 10,getValue: function() {setTimeout(function() {console.log(this.value); // 默認指向全局對象}.call(this), 100); // 強制綁定 this}
};obj.getValue(); // 輸出 10

3、call()apply() 的區別

特性call()apply()
參數傳遞方式逐個參數傳遞數組形式傳遞
性能通常更快略慢(需處理數組)
適用場景參數數量已知參數數量動態/不確定

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/81769.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81769.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/81769.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

讀一本書第一遍是快讀還是細讀?

在時間充足且計劃對重要書籍進行多遍閱讀的前提下,第一遍閱讀的策略可以結合**「快讀搭建框架」與「標記重點」**,為后續細讀奠定基礎。以下是具體建議及操作邏輯: 一、第一遍:快讀為主,目標是「建立全局認知」 1. 快…

基于大模型的全面驚厥性癲癇持續狀態技術方案

目錄 一、數據收集與預處理系統1.1 多模態數據集成模塊1.2 數據預處理流程二、大模型構建與訓練系統2.1 模型架構設計2.2 訓練流程三、術前評估系統3.1 癲癇發作風險預測3.2 手術可行性評估流程四、術中決策支持系統4.1 實時監測數據處理4.2 麻醉方案優化流程五、術后護理系統5…

React 19 中的useRef得到了進一步加強。

文章目錄 前言一 useRef 的核心原理1.1 為什么需要 useRef?1.2 基本語法 二、React 19 中 useRef 的常見用法2.1 訪問 DOM 元素2.2 保存跨渲染的數據 三、React 19 中的改進ref 作為一個屬性案例演示(觸發子組件焦點事件) 注意 總結 前言 在 React 的世界里&#x…

idea查看class文件源碼

1、在idea中查看.class文件源碼 在idea的一個工程里面將.class文件復制進去,會提示如下: 這時候,打開一個其他類,右鍵-》"show in explorer",打開資源文件夾,這時候將class文件粘貼在此處&#…

基于 Vue + CEF3 的瀏覽器批量管理系統(附功能詳解)

🌐 基于 Vue CEF3 的瀏覽器批量管理系統(附功能詳解) 在當前多任務操作需求日益增長的背景下,如何高效管理多個瀏覽器實例成為了一個值得探討的問題。今天給大家介紹一款基于 Vue 和 CEF3 構建的瀏覽器批量管理系統,…

JS實現古詩豎排從右至左

一個老題目,將下面古詩文由橫排,變成古文豎排模式: 靜夜思 李白 床前明月光, 疑似地上霜。 舉頭望明月, 低頭思故鄉。變成: 低|舉|疑|床|靜 頭|頭|似|前|夜 思|望|地|明|思 故|明|上|月| 鄉|月|霜|光|李…

在 Android 中實現支持多手勢交互的自定義 View(Kotlin 完整指南)

本文將手把手教你創建一個支持拖動、縮放、旋轉等多種手勢交互的自定義 View,并提供完整的代碼實現和優化建議。 一、基礎實現 1.1 創建自定義 View 骨架 import android.content.Context import android.graphics.* import android.util.AttributeSet import an…

Kotlin 協程 (一)

1. Kotlin 協程的核心概念 1.1 協程(Coroutine) 定義:協程是一種輕量級的執行上下文,可以在任何時候掛起和恢復,而不需要阻塞線程。特點: 比傳統線程更輕量,開銷更小。支持掛起和恢復&#xf…

機器學習 集成學習方法之隨機森林

集成學習方法之隨機森林 1 集成學習2 隨機森林的算法原理2.1 Sklearn API2.2 示例 1 集成學習 機器學習中有一種大類叫集成學習(Ensemble Learning),集成學習的基本思想就是將多個分類器組合,從而實現一個預測效果更好的集成分類…

thinkphp6實現統一監聽并記錄所有執行的sql語句除查詢外

創建文件app/middleware/SqlLogger.php <?php namespace app\middleware;use think\facade\Db; use think\facade\Session;class SqlLogger {public function handle($request, \Closure $next){// 監聽所有SQL $request->ip()Db::listen(function($sql, $time) {if (p…

pytorch訓練可視化工具---TensorBoard

一、目的&#xff1a;為什么使用 TensorBoard 調控模型 使用 TensorBoard 可以幫我們&#xff1a; 實時查看 loss / acc 曲線 → 判斷是否過擬合、欠擬合&#xff1b; 對比不同模型或超參數的效果&#xff1b; 可視化模型結構 → 幫助調試模型設計&#xff1b; 查看權重/梯…

機器學習知識自然語言處理入門

一、引言&#xff1a;當文字遇上數學 —— 自然語言的數字化革命 在自然語言處理&#xff08;NLP&#xff09;的世界里&#xff0c;計算機要理解人類語言&#xff0c;首先需要將文字轉化為數學向量。早期的 One-Hot 編碼如同給每個詞語分配一個唯一的 “房間號”&#xff0c;例…

Linux-線程概念和控制

1.Linux線程概念 1.1什么是線程 ? 在?個程序?的?個執?路線就叫做線程&#xff08;thread&#xff09;。更準確的定義是&#xff1a;線程是“?個進程內部 的控制序列” ? ?切進程?少都有?個執?線程 ? 線程在進程內部運?&#xff0c;本質是在進程地址空間內運?…

【氮化鎵】低劑量率對GaN HEMT柵極漏電的影響

2024 年 2 月 22 日,中國科學院新疆理化技術研究所的Li等人在《IEEE ACCESS》期刊發表了題為《Degradation Mechanisms of Gate Leakage in GaN-Based HEMTs at Low Dose Rate Irradiation》的文章,基于實驗分析和 TCAD 仿真,研究了低劑量率輻照下基于 GaN 的 p 型柵高電子遷…

.NET Core 中 Swagger 配置詳解:常用配置與實戰技巧

隨著微服務架構和 RESTful API 的廣泛應用&#xff0c;API 文檔的管理和自動化生成成為了開發中的重要部分。Swagger&#xff08;現為 OpenAPI&#xff09;是一款功能強大的工具&#xff0c;它可以自動生成 API 文檔&#xff0c;并提供交互式 UI&#xff0c;幫助開發者、測試人…

海康工業相機白平衡比選擇器對應的值被重置后,如何恢復原成像

做項目的時候&#xff0c;有時候手抖&#xff0c;一不小心把一個成熟穩定的項目的相機配置&#xff0c;重置了&#xff0c;如何進行恢復呢&#xff0c;在不知道之前配置數據的情況下。 我在做項目的時候&#xff0c;為了讓這個相機成像穩定一點&#xff0c;尤其是做顏色檢測時…

【八股戰神篇】Java虛擬機(JVM)高頻面試題

目錄 專欄簡介 一 請解釋Java虛擬機(JVM)及其主要功能 延伸 1. JVM的基本概念 2. JVM的主要功能 二 對象創建的過程了解嗎 延伸 1.Java 創建對象的四種常見方式 三 什么是雙親委派模型 延伸 1.雙親委派機制的作用: 2.雙親委派模型的核心思想: 3.雙親委派模型的…

win10 上刪除文件夾失敗的一個原因:sqlYog 備份/導出關聯了該文件夾

在嘗試刪除路徑為.../bak/sql的文件時&#xff0c;系統提示無權限操作。然而&#xff0c;關閉SQLyog后&#xff0c;刪除操作成功完成。這表明SQLyog可能正在占用該文件&#xff0c;導致刪除權限受限。關閉SQLyog后&#xff0c;文件被釋放&#xff0c;刪除操作得以順利進行。建議…

Oracle中如何解決LATCH:CACHE BUFFERS LRU CHAIN

簡單來講&#xff0c;Oracle為了高效管理BUFFER CACHE主要使用以下2種LRU列&#xff1a; ?LRU列&#xff0c;又叫替換列&#xff08;replacement list&#xff09;&#xff0c;其中又分為主列和輔助列。 主列&#xff1a;已使用的緩沖區列&#xff0c;分為HOT和COLD區域。HOT區…

C++:迭代器

迭代器的本質&#xff1a;對象。 迭代器與指針類似&#xff0c;通過迭代器可以指向容器中的某個元素&#xff0c;還可以對元素進行操作。 迭代器統一規范了遍歷方式。不同的數據結構可以用統一的方式去遍歷。 接下來是一個自定義迭代器的代碼示例。 #include<iostream&g…