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