call()、apply()的区别:
相同点:
1.call()和apply()都可以用来间接调用函数,都可以显式调用所需的this。即,任何函数可以作为任何对象的方法来调用。
2.两个方法都可以指定调用实参。
区别:
call()和apply()的基本区别:在于将参数传递给函数。
call():使用其自有的实参列表作为函数的参数;
apply():要求以数组的形式传入参数。
function track(o,m){ var original =o[m]; o[m] =function( ){ console.log(new Date(),m); var results =original.apply(this,arguments); console.log(new Date(),m); return results; } }
它们的用法可以通过给定的例子进行说明:
<script> var someObject = { myProperty:‘Foo‘, myMethod:function (prefix,posfix) { console.log(prefix + this.myProperty + posfix); } }; someObject.myMethod(‘<‘,‘>‘);//Foo var someOtherObject = { myProperty:‘Bar‘ }; someObject.myMethod.call(someOtherObject,‘<‘,‘>‘);//Bar someObject.myMethod.apply(someOtherObject,[‘<‘,‘>‘]);//Bar </script>