call,apply基本一样,不同就是参数的传递
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <title></title> <script> window.onload=function () { function fn1 (a,b) { console.log(this); console.log(a+b); } fn1.call(this,1,2); } </script> </head> <body> </body> </html>
得到的结果是,document,3,不信你在chrome、FF下打开看看
call能干的事,apply也能干,不过形式有点不同
fn1.apply(this,[1,2]);
apply第二个参数是以数组形式展现的,
下面用一个更典型的例子来说明apply用法
我们在在一堆数组中找一个最大的数,一般我们是这样干的
var arr=[3,55,99,3,62,83,17]; console.log( Math.max(3,55,99,3,62,83,17) );
结果显示是99。
但是当这个数组很长很长,或者是还不是很确定里面的个数时,我们该怎么去判断里面最大的值呢?这是apply出场了,
console.log( Math.max.apply(null,arr) );
前面的那个null可以不管,把这个数组塞进去就可以了,这样一样得到结果99。
时间: 2024-10-12 09:28:01