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