关于javascript中call和apply的用法

来源:互联网 发布:知乎推送 编辑:程序博客网 时间:2024/06/05 12:41
最近看了《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就是这样,
这个例子帮助我在理解绑定的含义时更加清晰。  

原创粉丝点击