<script type="text/javascript">
alert("ok");
var a = {
name: "我是a",
show: function () { alert(this.name); },
start: function () {
alert("我是a的方法!");
this.start();
}
},
b = {
name: "我是b",
start: function () { alert("我是b的方法!"); }
};
f=function(){this.start()};
a.start.apply(b); //可以理解为把a对象的start方法借给b对象用一下
</script>
运行结果
依次显示
ok
我是a的方法
我是b的方法
结论:apply就是把一个方法借给另一个对象去运行。方法还是a的只不过b玩了一下,但玩的时候
这个a的这个方法就像是b的方法一样。所以this自然就是b了。就好比把你的游戏机借我玩
一下是一个意思。
感兴趣的朋友
可以测试以下实例
f.apply(b);
f.apply(a);
a.show.apply(b);
本文通过示例解析JavaScript中对象方法的apply用法,展示了如何将一个对象的方法借用到另一个对象上执行,深入理解this在不同上下文中的指向。通过a.start.apply(b)的调用,可以看到方法虽然属于a,但在b对象上下文中执行,导致this指针指向b,进而改变了方法内部的行为。读者可以尝试更多应用实例以加深理解。
1512

被折叠的 条评论
为什么被折叠?



