javaScript 中 call 函數的用法說明

2020-12-16 站長之家

javaScript 中 call 函數的用法說明

javaScript 中的 call() 是一個奇妙的方法,但也是一個讓人迷惑的方法,先看一下官方的解釋:

call 方法

應用於:Function 對象

要求:版本 5.5

調用一個對象的一個方法,以另一個對象替換當前對象。

call([thisObj[,arg1[, arg2[, [,.argN]]]]])

參數

thisObj

可選項。將被用作當前對象的對象。

arg1, arg2, , argN

可選項。將被傳遞方法參數序列。

說明:

call 方法可以用來代替另一個對象調用一個方法。call 方法可將一個函數的對象上下文從初始的上下文改變為由 thisObj 指定的新對象。

如果沒有提供 thisObj 參數,那麼 Global 對象被用作 thisObj。

-------------------------------------------------------------------------------------------

乍一看,很容易把人看迷胡,先做一些簡單的說明

obj1.method1.call(obj2,argument1,argument2)

如上,call的作用就是把obj1的方法放到obj2上使用,後面的argument1..這些做為參數傳入。

舉一個具體的例子

function add(a,b)
{
alert(a+b);
}
function sub(a,b)
{
alert(a-b);
}

add.call(sub,3,1);

這個例子中的意思就是用 add 來替換 sub,add.call(sub,3,1) == add(3,1) ,所以運行結果為:alert(4); // 注意:js 中的函數其實是對象,函數名是對 Function 對象的引用。

相關焦點

  • JavaScript alert()函數用法說明
    JavaScript alert()函數用法說明 你對JavaScript alert()函數的用法是否熟悉,這裡和大家分享一下,alert消息對話框通常用於一些對用戶的提示信息,例如在表單中輸入了錯誤的數據時。
  • Javascript中split函數用法指導手冊
    Javascript中split函數用法指導手冊 本文向大家重點講解一下Javascript中split函數使用,它可以將一個字符串分割為子字符串,然後將結果作為字符串數組返回,相信本文介紹你對split函數的用法有明確的認識。
  • JavaScript中apply、call、bind的區別與用法
    apply()、call()和bind()方法都是Function.prototype對象中的方法,而所有的函數都是Function的實例。
  • 【JavaScript】箭頭函數
    箭頭函數箭頭函數是在es6中引入的,用法十分簡單,允許使用 => 定義函數// 箭頭函數const fn = (
  • 深入淺出 妙用Javascript中apply、call、bind
    apply、call   在 javascript 中,call 和 apply 都是為了改變某個函數運行時的上下文(context)而存在的,換句話說,就是為了改變函數體內部 this 的指向。而出現的,當一個 object沒有某個方法(本慄子中banana沒有say方法),但是其他的有(本慄子中apple有say方法),我們可以藉助call或apply用其它對象的方法來操作。
  • 【JavaScript】Promise函數的用法
    javascript
  • JavaScript 基礎:「47」JavaScript 語言中 parseInt 函數用法詳解
    JavaScript 語言中 parseInt 函數用法詳解。我們在日常編程過程中,經常會遇到不同數據類型轉換的問題。用得比較多的是字符串轉換為整型,還有一些常用的不同進位轉換。如果要實現數字之間不同類型轉換及進位轉換,我們在 JavaScript 語言中可以通過 parseInt 函數實現。
  • JavaScript 函數replace揭秘
  • JavaScript函數 - 事件驅動
    什麼是事件驅動函數? 最後給大家補充一個知識,叫做事件驅動函數,它到底是做什麼的呢?在頁面交互的過程中所調用的函數,該函數被稱之為事件驅動函數。現在先來簡單的了解一下,以後會詳細講到什麼是事件?和頁面交互的行為稱之為事件比如:滑鼠點擊某個按鈕時(onclick)、滑鼠浮動,或者滑鼠離開某一個區域(onmouseover、onmouseout)、文本框獲取焦點和失去焦點時(onfocus、onblur)等等如果我們想給一個按鈕綁定一個事件,就要通過事件驅動函數來綁定,並且通過id來找到它<script type = "text/javascript
  • JS函數中的this的四種綁定形式
    和bind方法)new綁定 正文javascript中的this和函數息息相關,所以今天,我就給大家詳細地講述一番:javascript函數中的this 一談到this,很多讓人暈暈乎乎的抽象概念就跑出來了,這裡我就只說最核心的一點——函數中的this總指向調用它的對象
  • JavaScript中的陷阱大集合
    evaleval 可以將字符串以javascript代碼的形式來解析執行,但是一般來說我們不建議這麼做。因為eval非常慢 - 當javascript被加載到瀏覽器中時,它會被編譯成本地代碼;然而執行的過程中每次遇到eval表達式,編譯引擎都將重新啟動執行編譯,這樣做的代 價太大了。
  • 說說那些經典的web前端面試題-JavaScript部分
    相同點:JavaScript 中 typeof 和 instanceof 常用來判斷一個變量是否為空,或者是什麼類型的。typeof的定義和用法:返回值是一個字符串,用來說明變量的數據類型。細節:(1)、typeof 一般只能返回如下幾個結果:number,boolean,string,function,object,undefined。
  • 來一輪帶注釋的demo,徹底搞懂javascript中的replace函數
    javascript這門語言一直就像一位帶著面紗的美女,總是看不清,摸不透,一直專注伺服器端,也從來沒有特別重視過,直到最近幾年,javascript越來越重要,越來越通用。最近和前端走的比較近,藉此機會,好好鞏固一下相關知識點。
  • JavaScript 中 Eval 函數的前世今生,執行代碼字符串
    Eval:執行代碼字符串內建函數 eval 允許執行一個代碼字符串。因此我們不能從外部訪問在 eval 中聲明的函數和變量:// 提示:本教程所有可運行的示例都默認啟用了嚴格模式 'use strict'eval("let x = 5; function f() {}");alert(typeof x); // undefined(沒有這個變量)// 函數 f 也不可從外部進行訪問
  • 走近 (javascript, 函數式)
    javascript 對函數式編程的支持在 javascript 中,函數是一等的,也就是說,在 javascript 中,函數本身也是一個值。;}someDoOuter(someDoParam);因為 javascript 中函數的一等性和高階性,使得函數可以作為語言中主要的工作單元,從而完整的支持函數式編程的特性。
  • 談談JS中的函數劫持
    函數劫持並不邪惡,關鍵是看使用的人。雖然這個概念在前端領域使用較少,但是在安全領域、自定義業務等場景下還是有一定的使用價值的。所以,這一篇文章將會和大家一起去了解一下JS中的函數劫持是什麼,有什麼用。 基本概念 函數劫持,顧名思義,即在一個函數運行之前把它劫持下來,添加我們想要的功能。當這個函數實際運行的時候,它已經不是原本的函數了,而是帶上了被我們添加上去的功能。
  • JavaScript 數組操作函數總結
    js中數組操作函數還是非常多的,今天忽然想到來總結一下,也算是溫故而知新吧。
  • 七天學會javascript第一天javascript介紹
    前幾周寫了幾篇關於入門php的文章,反響還不錯,之前簡單的提到了JavaScript,這周小編重點介紹JavaScript讓大家可以在一周時間內掌握這門前端語言的基本用法。javascript介紹javascript數據類型javascript運算符javascript對象javascript
  • javascript常用函數推薦
    繼續上一篇的內容,本文繼續javascript數組相關的常用函數推薦,基於ES6+規範,上一篇請查看這裡countOccurrences計算數組中值的出現次數。每次遇到數組內的特定值時,使用Array.prototype.reduce()遞增計數器。
  • 初學JavaScript應該清楚函數、事件、關鍵字和保留字、注釋的使用
    Script標記,在HTML標記中有兩種用法,分別舉例說明如下:一、 在HTML代碼中嵌入JavaScript代碼將JS代碼與Html代碼混合在一起編寫,如下代碼:<!函數的定義和使用JavaScript中的函數可以理解為C#中的方法,都是用來封裝業務邏輯代碼的,這樣做的好處是將經常使用的功能封裝起來,以後使用時只需要調用即可,沒有必要關心函數的具體代碼,只需要知道函數的功能是什麼就可以了。