call和apply

call和apply

 

通过call和apply可以重新定义函数的执行环境,即this的指向,这对于一些应用当中是十分常用的。

 

call()方法示例:

 

function changeStyle(type, value) {

    
this.style[type] = value;

}

var obj = document.getElementById('div1');

changeStyle.call(obj, 
'fontSize''20px');

changeStyle(
'fontSize''30px');  //出错,此时changeStyle中this引用的是window对象

注意changeStyle.call()方法有三个参数。

第一个参数用于指定该函数将被哪个对象所调用。这里指定了obj,也就意味着,changeStyle函数将被obj调用,因此函数体内this指向是obj对象。而第二个和第三个参数对应的是changeStyle函数里的type和value两个形参。最终我们看到的效果是Dom元素obj的字体变成了20px。

 

apply()方法示例:

 

var obj = document.getElementById('div1');

changeStyle.apply(obj, [
'fontSize''20px']);

changeStyle(
'fontSize''30px');  //出错,此时changeStyle中this引用的是window对象

 

apply的用法和call大致相同,只有一点区别,apply只接受两个参数,第一个参数和call相同,第二个参数必须是一个数组,数组中的元素对应的就是函数的形参。

 

内容来源于博客园

posted @ 2010-06-16 23:15  梅子  阅读(312)  评论(2编辑  收藏  举报