您的位置:首页 > Web前端 > JavaScript

javascript 中 方法call()的理解

2011-11-04 16:55 302 查看
<script type="text/javascript">

var testvar = 'window属性';

var o1 = { testvar: '1', fun: function () { alert('o1: ' + this.testvar + '<<'); } };

var o2 = { testvar: '2', fun2: function () { alert('o2: ' + this.testvar); } };

o1.fun();

o2.fun2();

o1.fun.call(o2);

</script>

输出结果为:

o1: 1<<

o2: 2

o1: 2<<

一种理解方法

call 方法

调用一个对象的一个方法,以另一个对象替换当前对象。

o1.fun.call(o2);

o1.fun方法中的this指向o2

另一各理解方法

o2.fun=o1.fun;

o2.fun();

delete o2.fun;

此时的o2实际被修改为:

var o2 = { testvar: '2', fun: function () { alert('o1: ' + this.testvar + '<<'); } };

但是当两个对象函数名不一样时,这种理解有点问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: