width="760" scrolling="no" height="90" frameborder="0" marginheight="0" marginwidth="0" border="0" id="alimamaifrm" name="alimamaifrm" src="http://p.alimama.com/code.php?t=2&i=mm_10003521_106784_109301&w=760&h=90&sz=11&bgc=FFFACD&bdc=FFFFFF&tc=000080&lc=000000&dc=000000">
我最近看了《javaScript高级程序设计》分享下
引用里面一个例子来辅助理解call和apply
function sayColor(sPrefix,sSuffix){
alert(sPrefix,this.color,sSuffix)
}
var obj = new Object();
obj.color = 'red';
sayColor.call(obj,'The color is ',' a very nice color indeed');
sayColor.apply(obj,['The color is ',' a very nice color indeed']);
//output "The color is red a very nice color indeed".
sayColor使用了this,但是this还没指向确切的实体对象
call和apply的第一个参数的作用就是把实体传入,告诉浏览器我是要在obj这个对象上执行sayColor,自然this指向了obj
区别仅仅在于后续参数,apply是使用数组,而call则原方法有多少个追加多少个
从前我们说call和apply都从继承的角度,而他确实也是为了继承而设计的,但是往往例子过于复杂,
这个例子好在他非常简单。
单个方法,普通Object使用call apply就是这样,
这个例子帮助我在理解绑定的含义时更加清晰。
width="759" scrolling="no" height="80" frameborder="0" src="http://p.alimama.com/cpacode.php?t=A&pid=mm_10003521_0_0&w=759&h=80&rn=1&cn=3&ky=耳机&cid=50008090&bgc=CAF99B&bdc=E6E6E6&tc=E1771E&dc=FFFFCC" style="width: 759px; height: 80px;" name="alimamaifrm" id="alimamaifrm" border="0" marginwidth="0" marginheight="0">
本文通过一个简单的示例解释了JavaScript中call与apply的区别及其用法。通过将方法绑定到特定对象,这两个函数使我们可以灵活地调用函数并改变其上下文。文章还讨论了它们如何帮助理解和实现继承。


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



