http://www.zhihu.com/question/20289071

func1.call(this, arg1, arg2); 或者 func1.apply(this, [arg1, arg2]); 来调用。其中 this 是你想指定的上下文,他可以任何一个 JavaScript 对象(JavaScript 中一切皆对象),call 需要把参数按顺序传递进去,而 apply 则是把参数放在数组里。

LZ要先明白存在call和apply的原因,才能记得牢一点:
在javascript OOP中,我们经常会这样定义:

function cat(){
}
cat.prototype={
food:"fish",
say: function(){
alert("I love "+this.food);
}
}

var blackCat = new cat;
blackCat.say();

但是如果我们有一个对象whiteDog = {food:"bone"},我们不想对它重新定义say方法,那么我们可以通过call或apply用blackCat的say方法:blackCat.say.call(whiteDog);

所以,可以看出call和apply是为了动态改变this而出现的,当一个object没有某个方法,但是其他的有,我们可以借助call或apply用其它对象的方法来操作。

用的比较多的,通过document.getElementsByTagName选择的dom 节点是一种类似array的array。它不能应用Array下的push,pop等方法。我们可以通过:
var domNodes = Array.prototype.slice.call(document.getElementsByTagName("*"));
这样domNodes就可以应用Array下的所有方法了。

其他的就不提了,讲多了反而迷惑。

最新文章

  1. IteratorPattern(迭代子模式)
  2. 9.6 MongoDB一
  3. UITableView增加和删除、移动
  4. MS CRM商机产品等Mapping
  5. Fedora8上Apache Httpd与Tomcat6初集成
  6. (转)RabbitMQ消息队列(三):任务分发机制
  7. httpsClient
  8. WCF - Overview
  9. Delphi5 update1的序列号
  10. 关于llvm kaleidoscope: 记一次Debug血泪之路
  11. Java面向对象接口的应用实例练习
  12. .Net Core 管道中的ConfigureServices 和Configure
  13. this应用详解-js原生
  14. git 入门教程之冲突合并
  15. elk之elasticsearch安装
  16. 记录jquery的ajax
  17. Android -- 获取View宽高
  18. 4.3之后的PingPong效果实现
  19. NFS exportfs 命令
  20. wc命令详解

热门文章

  1. ANDROID5.0触摸屏校准
  2. 利用命令控制台cmd进入某个硬盘的某个文件夹的命令是什么?
  3. JDK 1.6 下载 地址
  4. redis介绍【转】
  5. Linux 文件的几种类型
  6. ANSI
  7. 2014 IGF 评选(转)
  8. Intent传输数据的补充
  9. PHPSTORM 与 Xdebug 配合调试
  10. DOM笔记(十):JavaScript正则表达式