call和apply基礎解析

2021-08-17 02:54:39 字數 1138 閱讀 4885

一、call

call有兩個主要:給函式傳遞引數;擴充函式的作用域。擴充函式作用域很重要,即改變函式的上下文(改變this的指向)。下面簡單介紹一下,**如下:

window.job = 'teacher';

showjob = () =>

showjob(); //teacher

上述**中,this指向window,即this=window物件。當然,如果在**中加入嚴格模式:

'use strict';
'use strict';

window.job = 'teacher';

function showjob()

showjob();

此時,**會報錯:「job undefined」,原因嚴格模式下,此時的this指向undefined。現在忽略這種情況,回到問題,如果不想this指向window,要怎麼改變函式中的this,看下列**:

window.job = 'teacher';

const studentobj = ;

function showjob()

showjob.call(studentobj); //student

在showjob呼叫的時候,函式後面多加乙個call,然後在引數中放入this指向的物件即可。call在呼叫時使用,也叫動態繫結。call的重要功能,通俗講就是改變this的指向。

**段1:

function sum(num1, num2)

function callsum(num1, num2)

callsum(10, 20); //30

**段2:

function sum(num1, num2)

function callsum(num1, num2)

callsum(10, 20); //30

上述兩個**段的功能一樣。

注意:此時this作為呼叫物件不能忽略,如果要使用預設物件則可以使用null作為第乙個引數。

總結:2、call的主要作用是擴充套件函式的作用域,即改變this指向。

js方法call和apply例項解析

在ecmascript v3中,給function原型定義了這兩個方法,這兩個方法的作用都是一樣的 使用這兩個方法可以像呼叫其他物件方法一樣呼叫函式,這句話是從書上抄的,至少我是沒讀明白這是什麼意思。下面說簡單易懂的,先看段 function introduce name,age var p new...

apply和call的用法

應用某一物件的乙個方法,用另乙個物件替換當前物件。引數 thisobj 可選項。將被用作當前物件的物件。argarray 可選項。將被傳遞給該函式的引數陣列。說明 如果 argarray 不是乙個有效的陣列或者不是arguments物件,那麼將導致乙個 typeerror。如果沒有提供 argarr...

call 和apply 的區別

call方法 語法 call thisobj,object 定義 呼叫乙個物件的乙個方法,以另乙個物件替換當前物件 說明 call方法可以用來代替另乙個物件呼叫乙個方法。call方法可將乙個函式的物件上下文從初始的上下文改變為由thisobjext指定的新物件。如果沒有提供thisobj引數,那麼g...