Javascript一共有四种调用模式:方法调用模式、函数调用模式、构造器调用模式以及apply调用模式。调用模式不同,对应的隐藏参数this值也会不同。

  函数作为对象的属性时,称为方法。此时函数(即方法)中的this对应是该对象。

var myObject = {value:3,  func:function(){    alert(this.value);  }  
};

myObject.func();  //3

  也可以写成如下格式:

var myObject = {value:3
};myObject.func = function() {alert(this.value);
}

myObject.func();  //3

  上面,this对应的是myObject对象。

  三  函数调用模式

  函数调用模式即通常的函数调用,属于全局性调用,此时this对应的是全局对象,即Window对象。

var add = function(a, b) {return a + b;
}add(3,4);    //7

  上面也可以写成

window.add = function(a, b) {return a + b;
}

add(3,4); //7

  下面来看看下面的测试题,以检验你是否了解了this。

<script type="text/javascript">var add = function(a, b) {return a + b;}var myObject = {value:3};myObject.func = function() {var helper = function() {this.value = add(this.value, this.value);
        }helper();//alert(this.value);}   myObject.func();alert(myObject.value);</script>

  答案会是6吗?仔细想想。

  答案为6的程序应该是这样的:

<script type="text/javascript">var add = function(a, b) {return a + b;}var myObject = {value:3};myObject.func = function() {var that = this; // this对应myObject对象   (1)var helper = function() {//this.value = add(this.value, this.value); //这里调用模式为函数调用模式,而非方法调用模式,所以this对应全局对象   (2)that.value = add(that.value, that.value);
        }helper();//alert(this.value);}myObject.func();alert(myObject.value);</script>

  (1)处this在firefox调试如下:

  

  (2)处this在firefox调试如下:

  

  四  构造器调用模式

  若在函数前面通过new 来调用,其实是生成一新对象,this自然指向该新对象。

var add = function(a, b) {return a + b;
}var obj = new add(3, 4);

  obj为一对象:

  

  五  apply调用模式

apply方法有个参数,第一个是要绑定给this的值,第二个是一个参数数组。
var sum = add.apply(null,[3,4]);       // this对应全局变量,即window对象
var sum2 = add.apply(myObject,[3,4]);  //this对应为myObject对象

  六  源码

  源码下载。

 出处:http://www.cnblogs.com/chenyuming507950417/

Javascript函数调用的四种模式相关推荐

  1. Javascript函数调用的四种方法

    2019独角兽企业重金招聘Python工程师标准>>> 一.方法调用模式 函数作为对象的属性时,称为方法.此时函数(即方法)中的this对应是该对象. var myObject = ...

  2. spi协议时序图和四种模式实际应用详解

    大家好,我是无际. 上个章节我们讲解了spi接口定义,今天我们更加深入讲解下spi协议时序图和spi四种模式的用法. 刚开始接触单片机开发时,最怕就是看时序图,对于我来说就是奇怪的知识. 特别是SPI ...

  3. ThinkPHP的访问模式分为四种模式

    ThinkPHP的访问模式分为四种模式 0 普通模式 http://www.yual.com/index.php?m=user&a=show 1 pathinfo模式 http://www.y ...

  4. gRPC四种模式、认证和授权实战演示

    前言 上一篇对gRPC进行简单介绍,并通过示例体验了一下开发过程.接下来说说实际开发常用功能,如:gRPC的四种模式.gRPC集成JWT做认证和授权等. 正文 1. gRPC四种模式服务 以下案例演示 ...

  5. lvs工作在第几层_LVS 原理(调度算法、四种模式、四层负载均衡和七层 的区别)...

    目录 lvs的调度算法 lvs的四种模式 四层均衡负载和七层的区别 1.lvs调度算法(最常用的四种) 轮叫调度(rr) 调度器通过外部请求的顺序轮流分配到集群中的真实服务器上,对每台服务器都是均等的 ...

  6. 2021年用独立站铁赚的四种模式

    近期独立站建站平台发布财报,在2020年一年时间里,GMV 翻了一番.这个结果充分说明了独立站越来越受到卖家们的青睐,布局独立站也成为了必备标配. 想在2021年里利用独立站走上人生巅峰?那必然离不开 ...

  7. python函数调用的三种方式_python函数调用的四种方式

    原标题:python函数调用的四种方式 第一种:参数按顺序从第一个参数往后排#标准调用 运行结果: 第二种:#关键字调用 注意:关键调用从哪开始的,从哪以后都必须使用关键字调用除了'*'收集参数.不能 ...

  8. 企业风险管理的四种模式五种策略分别是什么?

    企业风险管理一直是一个经久不衰的话题,企业风险管理对于企业主来说尤为重要,这在很大程度上关系着企业能否健康的发展.鉴于很多人对于企业风险管理这一内容了解不是很透彻,今天分享企业风险管理的四种模式和五种 ...

  9. 云计算技术架构-云计算四种模式(公有云、私有云、混合云、行业云)

    接下来几篇主要从技术角度介绍云计算的架构:  云计算四种模式:公有云.私有云.混合云和行业云(本文讲述)  云计算架构:基础架构层.云平台层.业务应用层和业务管理层  云计算服务模式:IaaS. ...

最新文章

  1. LTV 即用户生命周期价值
  2. 清华大学朱文武团队夺冠AAAI 2021国际深度元学习挑战赛
  3. vector机器人 HOW TO CHARGE VECTOR 如何给矢量充电
  4. 查看pod网络范围_可用网络的ip地址范围
  5. 干货分享:如何使用Kubernetes的Ingress API
  6. 8.动态规划(1)——字符串的编辑距离
  7. 遇到attemp to invoke virtual method
  8. go 单元测试 testing 打印输出_2020,你需掌握go 单元测试进阶篇
  9. Thinkphp5 请求报错
  10. python中exchange函数使用_python基于exchange函数发送邮件过程详解
  11. [收藏转载]明星软件工程师的十种特质
  12. 推荐的C++书籍以及阅读顺序
  13. GB2312汉字区位码、交换码和机内码转换方法(转)
  14. 录制Gif动画的软件-ScreenToGif
  15. 智能家居平台软件测试,智能家居系统测试
  16. DNS的更新和ddns(动态域名解析)
  17. .asd文件如何恢复
  18. 老外眼里的中式英语PK标准英语
  19. 暖暖环游世界显示服务器异常,暖暖环游世界客服常见问题汇总
  20. Presto 0.224个人笔记

热门文章

  1. Retrofit+RxJava联网工具类
  2. SINOCES 2011
  3. IOS_SearchBar搜索栏及关键字高亮
  4. LCD1602,4位数据总线液晶屏时钟,STC12C5A60S2的10位ADC功能程序
  5. 全球增长最快域名解析商Top10:中国占据四席
  6. Qt经验积累:常见的驱动打包处理方法
  7. 在Idea中测试各JVM语言的交互性
  8. 编译安装PHP出现configure: error: MySQL configure failed. Please check config.log的解决方法
  9. Dispatch Queue 之 Invoke 当前队列
  10. Java线程与Linux内核线程的映射关系