摘要:對(duì)于和兩者在作用上是相同的,但兩者在參數(shù)上有區(qū)別的。會(huì)將一個(gè)數(shù)組轉(zhuǎn)換為一個(gè)參數(shù)接一個(gè)參數(shù)的傳遞給方法方法沒(méi)有提供一個(gè)數(shù)組,但是它提供了所以同樣也可以通過(guò)來(lái)轉(zhuǎn)換一下這個(gè)數(shù)組,即
對(duì)于apply和call兩者在作用上是相同的,但兩者在參數(shù)上有區(qū)別的。
對(duì)于第一個(gè)參數(shù)意義都一樣,但對(duì)第二個(gè)參數(shù):
apply傳入的是一個(gè)參數(shù)數(shù)組,也就是將多個(gè)參數(shù)組合成為一個(gè)數(shù)組傳入,
call則作為call的參數(shù)傳入(從第二個(gè)參數(shù)開(kāi)始)。
func.call(func1,var1,var2,var3) func.apply(func1,[var1,var2,var3])
同時(shí)使用apply的好處是可以直接將當(dāng)前函數(shù)的arguments對(duì)象作為apply的第二個(gè)參數(shù)傳入
(1)基本用法:
function add(a,b) { alert(a+b); } function sub(a,b) { alert(a-b); } add.apply(sub,[3,1]); //add.call(sub,3,1);
(2)實(shí)現(xiàn)繼承:
function Animal(name){ this.name = name; this.showName = function(){ alert(this.name); } } function Cat(name){ Animal.apply(this, [name]); //Animal.call(this, name); } var cat = new Cat("Black Cat"); cat.showName();
(3)其他用法
Math.max 可以實(shí)現(xiàn)得到數(shù)組中最大的一項(xiàng):
因?yàn)镸ath.max 參數(shù)里面不支持Math.max([param1,param2]) 也就是數(shù)組,但是它支持Math.max(param1,param2,param3…),所以可以根據(jù)apply的特點(diǎn)來(lái)解決 var max=Math.max.apply(null,array),這樣輕易的可以得到一個(gè)數(shù)組中最大的一項(xiàng)。(apply會(huì)將一個(gè)數(shù)組轉(zhuǎn)換為一個(gè)參數(shù)接一個(gè)參數(shù)的傳遞給方法)
push方法沒(méi)有提供push一個(gè)數(shù)組,但是它提供了push(param1,param,…paramN) 所以同樣也可以通過(guò)apply來(lái)轉(zhuǎn)換一下這個(gè)數(shù)組,即:
var arr1=new Array("1","2","3"); var arr2=new Array("4","5","6"); Array.prototype.push.apply(arr1,arr2);
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/85329.html
摘要:和的區(qū)別和作用都是把綁定到的作用,即改變的指向,然而唯一的區(qū)別就是傳遞的參數(shù)必須得是數(shù)組的形式傳遞,而則直接連續(xù)參數(shù)傳遞和在什么地方可以用到呢當(dāng)一個(gè)對(duì)象需要調(diào)用另外一個(gè)對(duì)象里面的方法的時(shí)候就可以用到和,和可以理解成是繼承另外一個(gè)對(duì)象的方法, call和apply的區(qū)別 obj.call(thisObj, arg1, arg2, ...);obj.apply(thisObj, [arg1...
摘要:和的區(qū)別和作用都是把綁定到的作用,即改變的指向,然而唯一的區(qū)別就是傳遞的參數(shù)必須得是數(shù)組的形式傳遞,而則直接連續(xù)參數(shù)傳遞和在什么地方可以用到呢當(dāng)一個(gè)對(duì)象需要調(diào)用另外一個(gè)對(duì)象里面的方法的時(shí)候就可以用到和,和可以理解成是繼承另外一個(gè)對(duì)象的方法, call和apply的區(qū)別 obj.call(thisObj, arg1, arg2, ...);obj.apply(thisObj, [arg1...
摘要:綁定函數(shù)被調(diào)用時(shí),也接受預(yù)設(shè)的參數(shù)提供給原函數(shù)。一個(gè)綁定函數(shù)也能使用操作符創(chuàng)建對(duì)象這種行為就像把原函數(shù)當(dāng)成構(gòu)造器。 一直很難理解js中的call apply bind,在w3schools,mdn閱讀了,也看了很多相關(guān)的文章,今天我來(lái)寫下我理解的call apply bind 首先創(chuàng)建一個(gè)函數(shù) function man(){} man.prototype = { name: ...
摘要:和類似,都是調(diào)用函數(shù),并指定函數(shù)的值和參數(shù),區(qū)別在于傳入?yún)?shù)是通過(guò)參數(shù)列表的形式,傳入?yún)?shù)是通過(guò)數(shù)組的形式方法與前兩個(gè)不同,它創(chuàng)建一個(gè)新的函數(shù),在調(diào)用新函數(shù)時(shí),會(huì)調(diào)用原函數(shù),并指定原函數(shù)的值和參數(shù)。執(zhí)行的時(shí)候并沒(méi)有調(diào)用函數(shù)。 簡(jiǎn)介 JavaScript 中有三個(gè)方法Function.prototype.call()、Function.prototype.apply()和Function...
閱讀 2812·2023-04-25 18:06
閱讀 2609·2021-11-22 09:34
閱讀 1699·2021-11-08 13:16
閱讀 1325·2021-09-24 09:47
閱讀 3065·2019-08-30 15:44
閱讀 2787·2019-08-29 17:24
閱讀 2600·2019-08-23 18:37
閱讀 2452·2019-08-23 16:55