call()、apply()的区别:
相同点:
1.call()和apply()都可以用来间接调用函数,都可以显式调用所需的this。即,锚点滑动任何函数可以作为任何对象的方法来调用。
2.两个方法都可以指定调用实参。
区别:
call()和apply()的基本区别:在于将参数传递给函数弹出层。
call():使用其自有的实参列表作为函数的参数;
apply():要求以数组的形式传入参数。
1
2
3
4
5
6
7
8
9
|
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;
}
}
|
它们的用法可以通过给定的例子进行说明js返回顶部:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
<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>
|