Javascript函数调用的四种模式
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调用模式
var sum = add.apply(null,[3,4]); // this对应全局变量,即window对象 var sum2 = add.apply(myObject,[3,4]); //this对应为myObject对象
六 源码
源码下载。
出处:http://www.cnblogs.com/chenyuming507950417/
Javascript函数调用的四种模式相关推荐
- Javascript函数调用的四种方法
2019独角兽企业重金招聘Python工程师标准>>> 一.方法调用模式 函数作为对象的属性时,称为方法.此时函数(即方法)中的this对应是该对象. var myObject = ...
- spi协议时序图和四种模式实际应用详解
大家好,我是无际. 上个章节我们讲解了spi接口定义,今天我们更加深入讲解下spi协议时序图和spi四种模式的用法. 刚开始接触单片机开发时,最怕就是看时序图,对于我来说就是奇怪的知识. 特别是SPI ...
- ThinkPHP的访问模式分为四种模式
ThinkPHP的访问模式分为四种模式 0 普通模式 http://www.yual.com/index.php?m=user&a=show 1 pathinfo模式 http://www.y ...
- gRPC四种模式、认证和授权实战演示
前言 上一篇对gRPC进行简单介绍,并通过示例体验了一下开发过程.接下来说说实际开发常用功能,如:gRPC的四种模式.gRPC集成JWT做认证和授权等. 正文 1. gRPC四种模式服务 以下案例演示 ...
- lvs工作在第几层_LVS 原理(调度算法、四种模式、四层负载均衡和七层 的区别)...
目录 lvs的调度算法 lvs的四种模式 四层均衡负载和七层的区别 1.lvs调度算法(最常用的四种) 轮叫调度(rr) 调度器通过外部请求的顺序轮流分配到集群中的真实服务器上,对每台服务器都是均等的 ...
- 2021年用独立站铁赚的四种模式
近期独立站建站平台发布财报,在2020年一年时间里,GMV 翻了一番.这个结果充分说明了独立站越来越受到卖家们的青睐,布局独立站也成为了必备标配. 想在2021年里利用独立站走上人生巅峰?那必然离不开 ...
- python函数调用的三种方式_python函数调用的四种方式
原标题:python函数调用的四种方式 第一种:参数按顺序从第一个参数往后排#标准调用 运行结果: 第二种:#关键字调用 注意:关键调用从哪开始的,从哪以后都必须使用关键字调用除了'*'收集参数.不能 ...
- 企业风险管理的四种模式五种策略分别是什么?
企业风险管理一直是一个经久不衰的话题,企业风险管理对于企业主来说尤为重要,这在很大程度上关系着企业能否健康的发展.鉴于很多人对于企业风险管理这一内容了解不是很透彻,今天分享企业风险管理的四种模式和五种 ...
- 云计算技术架构-云计算四种模式(公有云、私有云、混合云、行业云)
接下来几篇主要从技术角度介绍云计算的架构: 云计算四种模式:公有云.私有云.混合云和行业云(本文讲述) 云计算架构:基础架构层.云平台层.业务应用层和业务管理层 云计算服务模式:IaaS. ...
最新文章
- LTV 即用户生命周期价值
- 清华大学朱文武团队夺冠AAAI 2021国际深度元学习挑战赛
- vector机器人 HOW TO CHARGE VECTOR 如何给矢量充电
- 查看pod网络范围_可用网络的ip地址范围
- 干货分享:如何使用Kubernetes的Ingress API
- 8.动态规划(1)——字符串的编辑距离
- 遇到attemp to invoke virtual method
- go 单元测试 testing 打印输出_2020,你需掌握go 单元测试进阶篇
- Thinkphp5 请求报错
- python中exchange函数使用_python基于exchange函数发送邮件过程详解
- [收藏转载]明星软件工程师的十种特质
- 推荐的C++书籍以及阅读顺序
- GB2312汉字区位码、交换码和机内码转换方法(转)
- 录制Gif动画的软件-ScreenToGif
- 智能家居平台软件测试,智能家居系统测试
- DNS的更新和ddns(动态域名解析)
- .asd文件如何恢复
- 老外眼里的中式英语PK标准英语
- 暖暖环游世界显示服务器异常,暖暖环游世界客服常见问题汇总
- Presto 0.224个人笔记
热门文章
- Retrofit+RxJava联网工具类
- SINOCES 2011
- IOS_SearchBar搜索栏及关键字高亮
- LCD1602,4位数据总线液晶屏时钟,STC12C5A60S2的10位ADC功能程序
- 全球增长最快域名解析商Top10:中国占据四席
- Qt经验积累:常见的驱动打包处理方法
- 在Idea中测试各JVM语言的交互性
- 编译安装PHP出现configure: error: MySQL configure failed. Please check config.log的解决方法
- Dispatch Queue 之 Invoke 当前队列
- Java线程与Linux内核线程的映射关系