成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

apply 和call的用法

animabear / 2946人閱讀

摘要:對(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

相關(guān)文章

  • callapply區(qū)別用法

    摘要:和的區(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...

    ideaa 評(píng)論0 收藏0
  • callapply區(qū)別用法

    摘要:和的區(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...

    animabear 評(píng)論0 收藏0
  • 復(fù)習(xí)javascript中call,apply,bind用法

    摘要:綁定函數(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: ...

    darryrzhong 評(píng)論0 收藏0
  • JavaScript 中 call、apply、bind 用法區(qū)別

    摘要:和類似,都是調(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...

    wind3110991 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<