Predefined:js中的this指向直接运行上下文。

  call和apply是ECMASCRIPT 3在函数原型上所定义的方法,目的在于改变或指定this的指向,从而改变函数直接执行上下文。两者的不同之处在于传参,call接受多个参数,而apply接受数组。

  1:隐藏的call和apply:     

 var a = "hello";

 function foo(){
alert(this.a)
} foo() ; //"hello"
foo.call(window); // "hello"
// window.foo() == foo.call(window);

  默认的,我们认为:若函数以函数名+小括号方式执行,那么会调用原型中的call方法(此处只讨论call方法),动态的指定直接执行上下文.

  2:常用技巧:

  

function superType(name){
this.name = name;
}
function SubType(name){
superType(name)
}
var instance = new SubType("lihua");
console.log(instance.name); //undefined;
console.log(global.name); //lihua //在借用构造函数中
function superType(name){
this.name = name;
}
function SubType(name){
superType.call(this,name)
}
var instance = new SubType("lihua");
console.log(instance.name); //lihua;
console.log(global.name); //undefined
//使用apply改变传参方式

var countArr = [1,2,3,13,24,5,21];
Math.max(countArr); //NaN(类型转换)
Math.max.apply(Math,countArr) //

最新文章

  1. Spark源码系列(九)Spark SQL初体验之解析过程详解
  2. Azure CDN 启用HTTPS
  3. FZU 2082 过路费
  4. cocos2d-x 二进制文件的读写
  5. 谈Delphi中SSL协议的应用(好多相关文章)
  6. 用ISO C++实现自己的信号槽(Qt另类学习)
  7. Android 获取系统短信内容
  8. Tomcat启动分析(Tomcat7.0)
  9. OpenXml2.0 - 找不到类型或命名空间名称“DocumentFormat”
  10. 使用UIPageControl UIScrollView制作APP引导界面
  11. cf D. Levko and Array
  12. 忘记Django登陆账号和密码的处理方法
  13. AngularJS服务和路由
  14. MySQL index 增删改
  15. windows 下编译 OpenSSL1.0.2l 版
  16. 勇者斗恶龙 uva 11292(简单贪心)
  17. AGC-018 C
  18. 数据库主库从库宕机重启后binlog数据同步
  19. ng-packagr 不能全部打包文件
  20. saltstack二次开发(三)

热门文章

  1. [HEOI2015]兔子与樱花(贪心)
  2. java selenium常用API汇总
  3. Flutter-charts_flutter圖表
  4. Conservation Vs Non-conservation Forms of conservation Equations
  5. c#类的定义,c#中的关健字,C#标识符
  6. python全栈开发,Day44(IO模型介绍,阻塞IO,非阻塞IO,多路复用IO,异步IO,IO模型比较分析,selectors模块,垃圾回收机制)
  7. ORACLE Physical Standby DG搭建
  8. P5018对称二叉树
  9. Linux学习篇(四)-Linux 文件管理命令详解
  10. STM32 ADC基础与多通道采样