call、apply和bind

callapplybind都是JavaScript中函數對象的方法,用于改變函數的this值。

  1. callcall方法接收一個對象和一系列參數,并立即調用函數,將this值設置為提供的對象。例如:
function greet(greeting, punctuation) {console.log(greeting + ', ' + this.name + punctuation);
}
let person = {name: 'Alice'};
greet.call(person, 'Hello', '!'); // 輸出 "Hello, Alice!"

這段代碼中定義了一個函數greet,并創建了一個對象person。然后,使用call方法調用greet函數,并將this值設置為person對象。

讓我們逐行解釋這段代碼:

  1. function greet(greeting, punctuation) {...}:這是一個函數定義,greet函數接收兩個參數:greetingpunctuation

  2. console.log(greeting + ', ' + this.name + punctuation);:這是greet函數的主體,它將greeting, this.namepunctuation連接成一個字符串,并打印到控制臺。這里的this是函數運行時的上下文,它的值取決于函數是如何被調用的。

  3. let person = { name: 'Alice' };:這行代碼創建了一個對象person,并給它一個屬性name,值為Alice

  4. greet.call(person, 'Hello', '!');:這行代碼使用call方法調用greet函數,并將this值設置為person對象。call方法的第一個參數是this的值,后面的參數是傳遞給greet函數的參數。所以,在這個函數調用中,this.name的值是Alicegreeting的值是Hellopunctuation的值是!

因此,這段代碼的輸出是Hello, Alice!

  1. applyapply方法和call方法類似,但是它接收一個對象和一個數組(或類數組對象),而不是一系列參數。例如:
function greet(greeting, punctuation) {console.log(greeting + ', ' + this.name + punctuation);
}
let person = {name: 'Alice'};
greet.apply(person, ['Hello', '!']); // 輸出 "Hello, Alice!"
  1. bindbind方法接收一個對象和一系列參數,并返回一個新的函數,這個新的函數的this值被綁定到提供的對象。這個新的函數可以在以后任何時候調用,而不是立即調用。例如:
function greet(greeting, punctuation) {console.log(greeting + ', ' + this.name + punctuation);
}
let person = {name: 'Alice'};
let greetAlice = greet.bind(person, 'Hello', '!');
greetAlice(); // 輸出 "Hello, Alice!"

注意,箭頭函數不綁定自己的this值,所以callapplybind方法在箭頭函數上無效。

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

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

相關文章

Linux驅動開發筆記(二) 基于字符設備驅動的I/O操作

文章目錄 前言一、設備驅動的作用與本質1. 驅動的作用2. 有無操作系統的區別 二、內存管理單元MMU三、相關函數1. ioremap( )2. iounmap( )3. class_create( )4. class_destroy( ) 四、GPIO的基本知識1. GPIO的寄存器進行讀寫操作流程2. 引腳復用2. 定義GPIO寄存器物理地址 五、…

【2024最新華為OD-C卷試題匯總】傳遞悄悄話的最長時間(100分) - 三語言AC題解(Python/Java/Cpp)

🍭 大家好這里是清隆學長 ,一枚熱愛算法的程序員 ? 本系列打算持續跟新華為OD-C卷的三語言AC題解 💻 ACM銀牌🥈| 多次AK大廠筆試 | 編程一對一輔導 👏 感謝大家的訂閱? 和 喜歡💗 文章目錄 前…

東哥一句兄弟,你還當真了?

關注盧松松,會經常給你分享一些我的經驗和觀點。 你還真把自己當劉強東兄弟了?誰跟你是兄弟了?你在國外的房子又不給我住,你出去旅游也不帶上我!都成人年了,東哥一句客套話,別當真! 今天,東哥在高管會上直言&…

mysql內存結構

一:邏輯存儲結構:表空間->段->區->頁->行、 表空間:一個mysql實例對應多個表空間,用于存儲記錄,索引等數據。 段:分為數據段,索引段,回滾段。innoDB是索引組織表&…

215. 數組中的第K個最大元素(快速排序、堆排序)

根據這道題總結一下快速排序和堆排序,再根據這兩種方法寫這道題。 給定整數數組 nums 和整數 k,請返回數組中第 k 個最大的元素。 請注意,你需要找的是數組排序后的第 k 個最大的元素,而不是第 k 個不同的元素。 你必須設計并實…

qmt量化交易策略小白學習筆記第6期【qmt如何獲取股票歷史漲跌停價格】

qmt如何獲取股票歷史漲跌停價格 qmt更加詳細的教程方法,會持續慢慢梳理。 也可找尋博主的歷史文章,搜索關鍵詞查看解決方案 ! 感謝關注,需免費開通量化回測與咨詢實盤權限,可以和博主聯系! 獲取股票歷史…

[數據結構] -- 單鏈表

🌈 個人主頁:白子寰 🔥 分類專欄:C打怪之路,python從入門到精通,數據結構,C語言,C語言題集👈 希望得到您的訂閱和支持~ 💡 堅持創作博文(平均質量分82)&#…

c++編程14——STL(3)list

歡迎來到博主的專欄:c編程 博主ID:代碼小豪 文章目錄 list成員類型構造、析構、與賦值iterator元素訪問修改元素list的操作 list list的數據結構是一個鏈表,準確的說應該是一個雙向鏈表。這是一個雙向鏈表的節點結構: list的使用…

Vue學習筆記3——事件處理

事件處理 1、事件處理器(1)內聯事件處理器(2)方法事件處理器 2、事件參數3、事件修飾符 1、事件處理器 我們可以使用v-on 指令(簡寫為)來監聽DOM事件,并在事件觸發時執行對應的JavaScript。 用法: v-on:click"me…

JVM學習-執行引擎

執行引擎 執行引擎是Java虛擬機核心組成部分之一虛擬機是一個相對于物理機的概念,這兩種機器都有代碼執行能力,其區別是物理機的執行引擎是直接建立在處理器、緩存、指令集和操作系統層面上的,而虛擬機的執行引擎是由軟件自行實現的&#xf…

【算法】遞歸、搜索與回溯——簡介

簡介:遞歸、搜索與回溯,本節博客主要是簡單記錄一下關于“遞歸、搜索與回溯”的相關簡單概念,為后續算法做鋪墊。 目錄 1.遞歸1.1遞歸概念2.2遞歸意義2.3學習遞歸2.4寫遞歸代碼步驟 2.搜索3.回溯與剪枝 遞歸、搜索、回溯的關系: …

ICML2024 定義新隱私保護升級:DP-BITFIT新型微調技術讓AI模型學習更安全

DeepVisionary 每日深度學習前沿科技推送&頂會論文分享,與你一起了解前沿深度學習信息! 引言:差分隱私在大模型微調中的重要性和挑戰 在當今的深度學習領域,大型預訓練模型的微調已成為提高各種任務性能的關鍵技術。然而&am…

推特熱帖:大語言模型自薦能夠替代的20種人類工作!快來看你是否需要轉行!

最近推特上有一個例子引起了廣泛的討論,事情的起因是這樣的:網友讓 GPT-4o 預測一下自己未來將會替代人類哪些工作? 這聽起來很有趣!GPT-4o會給出什么樣的預測呢? 3.5研究測試:hujiaoai.cn 4研究測試&…

02-Linux【基礎篇】

一、Linux的目錄結構 1.基本介紹 Linux的文件系統采用層級式的樹狀目錄結構,在此結構中的最上層是根目錄"/",然后在此目錄下再創建其他的目錄 深刻理解Linux樹狀文件目錄是非常重要的 記住一句經典的話:在Linux世界里&#xff…

如何在 DigitalOcean Droplet 云主機上創建 Ubuntu 服務器

在本文中,你將通過 DigitalOcean 的管理面板創建一個 Ubuntu 服務器,并將其配置為使用你的 SSH 密鑰。設置好服務器后,你可以在其上部署應用程序和網站。 本教程是DigitalOcean云課程簡介的一部分,它指導用戶完成將應用程序安全地…

win10右鍵沒有默認打開方式的選項的處理方法

問題描述 搞了幾個PDF書籍學習一下,不過我不想用默認的WPS打開,因為WPS太惡心人了,占用資源又高。我下載了個Sumatra PDF,這時候我像更改pdf文件默認的打開程序,發現右擊沒有這個選項。 問題解決 右擊文件–屬性–…

汽車以太網發展現狀及挑戰

一、汽車以太網技術聯盟 目前推動汽車以太網技術應用與發展的組織包括:OPEN Alliance(One-Pair Ether-Net Alliance SIG)聯盟,主要致力于汽車以太網推廣與使用,該聯盟通過推進 BroadR- Reach 單對非屏蔽雙絞線以太網傳…

設計新境界:大數據賦能UI的創新美學

設計新境界:大數據賦能UI的創新美學 引言 隨著大數據技術的蓬勃發展,它已成為推動UI設計創新的重要力量。大數據不僅為界面設計提供了豐富的數據資源,還賦予了設計師以全新的視角和工具來探索美學的新境界。本文將探討大數據如何賦能UI設計…

面試八股之JVM篇3.5——垃圾回收——G1垃圾回收器

🌈hello,你好鴨,我是Ethan,一名不斷學習的碼農,很高興你能來閱讀。 ??目前博客主要更新Java系列、項目案例、計算機必學四件套等。 🏃人生之義,在于追求,不在成敗,勤通…

1688. 比賽中的配對次數

題目: 給你一個整數 n ,表示比賽中的隊伍數。比賽遵循一種獨特的賽制: 如果當前隊伍數是 偶數 ,那么每支隊伍都會與另一支隊伍配對。總共進行 n / 2 場比賽,且產生 n / 2 支隊伍進入下一輪。 如果當前隊伍數為 奇數 …