js的call和apply的應用說明

2021-07-07 10:43:41 字數 1562 閱讀 3834

call方法:

語法:call([thisobj[,arg1[, arg2[,   [,.argn]]]]]) 

定義:呼叫乙個物件的乙個方法,以另乙個物件替換當前物件。 

說明: 

call 方法可以用來代替另乙個物件呼叫乙個方法。call 方法可將乙個函式的物件上下文從初始的上下文改變為由 thisobj 指定的新物件。 

如果沒有提供 thisobj 引數,那麼 global 物件被用作 thisobj。

執行a()函式時,依次彈出object window,hello,空。其中this就是代表當前的window物件

執行b函式時,其實就是呼叫a函式,因為有call(testobj)的存在,就將a函式裡的this,用testobj來替換了,所以依次輸出object testobj,hello,bing.

可以看做成是b函式繼承a函式,並且改變執行的this物件

同時,call(obj,[arge,arge,...])可以存入列表引數

b函式,呼叫a函式的同時,既改變a函式this的執行物件,同時有傳入引數列表1,2。這兩個引數。而在a函式裡,通過arguments陣列可以獲取到這兩個值,所以在a中,是可以通過arguments來呼叫引數完成我們的任務。更加深入了解可以了解一下arguments對像。

function changestyle(attr, value)

var box = document.getelementbyid('box');

call中的第乙個引數用於指定將要呼叫此函式的物件,在這裡,changestyle函式將被box物件呼叫,this指向了box物件,如果不用call的話,程式報錯,因為window物件中沒有style屬性。

以下是其他的一些經典用法

), 第二個引數是乙個陣列集合,   

在呼叫person的時候,他需要的不是乙個陣列,但是為什麼他給我乙個陣列我仍然可以將陣列解析為乙個乙個的引數,  

a)math.max 可以實現得到陣列中最大的一項  

因為math.max 引數裡面不支援math.max([param1,param2]) 也就是陣列  

null

,array),這樣輕易的可以得到乙個陣列中最大的一項  

這塊在呼叫的時候第乙個引數給了乙個null

,這個是因為沒有物件去呼叫這個方法,我只需要用這個方法幫我運算,得到返回的結果就行,.所以直接傳遞了乙個

null

過去  

b)math.min  可以實現得到陣列中最小的一項  

同樣和 max是乙個思想 var

null

,array);  

c)array.prototype.push 可以實現兩個陣列合併  

vararr1=new

array(

"1",

"2",

"3");   

vararr2=new

array(

"4",

"5",

"6");   

js的call和apply區別

obj.call newobj,arg1,arg2,上面的都是把obj的this指向了newobj,這時newobj就繼承了obj的屬性和方法。兩者區別是接收的引數不同,第乙個引數都是函式執行的作用域 this call接受的是連續引數,如果沒有提供newobj引數,那麼global物件被用於new...

JS中apply和call的區別

聯絡 obj 這個物件將代替 function類裡this物件,也即 function類 函式 裡的this不在是指 function 本身,而是obj args 這個是陣列型別的引數,它將作為引數傳給function args arguments 結果是還是執行 function 類方法 函式 的...

js中的apply和call函式

主要我是要解決一下幾個問題 obj 這個物件將代替function類裡this物件 args 這個是陣列,它將作為引數傳給function args arguments function.call obj,param1 param2 paramn obj 這個物件將代替function類裡this物...