JavaScript四种调用模式和this示例介绍


Posted in Javascript onJanuary 02, 2014

JavaScript调用时除了声明时定义的形参外,每个函数接受两个附加参数:this 和arguments,this在面向对象编程中非常重要,它取决于调用模式。

JavaScript有四种调用模式,方法调用模式,函数调用模式,构造器调用模式和apply调用模式。这些模式在初始化关键参数this上存在差异。

方法调用模式:当一个函数被保存为对象的一个属性时,我们称它为一个方法,当一个方法被调用时,this被绑定到该对象上。如果调用表达式包含一个属性取表达式(即一个.点表达式或[script]下标表达式),那么它被当做一个方法调用。

var myObject = { 
value: 0; 
increment: function(inc){ 
this.value += typeof inc === 'number' ? inc : 1; 
} 
}; myObject.increment(); 
document.writeln(myObject.value);//1 
myObject.increment(2); 
document.writeln(myObject.value);//2

方法可以使用this去访问对象,所以它能从对象中取值或修改对象。this的绑定发生在调用的时候。这个超级迟绑定使得函数可以对this高度复用。通过this可以取得他们所属的上下文方法称为公共方法。

函数调用模式:当一个函数并非一个对象的属性时,那么它被当做一个函数来调用 var sum = add(3, 4);//sum值为7
当函数以此模式调用时,this被绑定到全局对象。

构造器调用模式:JavaScript是一门基于原型继承的语言。这意味着可以直接从其他对象继承属性。该语言是无类别的。
如果在函数前面带上new来调用,那么将创建一个隐藏连接到该函数的prototype成员的新对象,同时this将会被绑定到那个新对象上。

Apply调用模式:因为JavaScript是一门函数式的面向对象编程语言,所以函数可以拥有方法。
apply方法让哦我们构建一个参数数组并用其去调用函数。它也允许我们选择this的值。
apply方法接受两个参数,第一个将被绑定给this的值,第二个就是一个参数数组。

Javascript 相关文章推荐
翻译整理的jQuery使用查询手册
Mar 07 Javascript
js模拟实现Array的sort方法
Dec 11 Javascript
Extjs ajax同步请求时post方式参数发送方式
Aug 05 Javascript
通过AJAX的JS、JQuery两种方式解析XML示例介绍
Sep 23 Javascript
JavaScript计算器网页版实现代码分享
Jul 15 Javascript
webpack 1.x升级过程中的踩坑总结大全
Aug 09 Javascript
2种简单的js倒计时方式
Oct 20 Javascript
JavaScript中join()、splice()、slice()和split()函数用法示例
Aug 24 Javascript
jQuery zTree插件使用简单教程
Aug 16 jQuery
Vue 中获取当前时间并实时刷新的实现代码
May 12 Javascript
JavaScript常用进制转换及位运算实例解析
Oct 14 Javascript
jQuery实现穿梭框效果
Jan 19 jQuery
ParseInt函数参数设置介绍
Jan 02 #Javascript
JS中Date日期函数中的参数使用介绍
Jan 02 #Javascript
JavaScript中Math对象方法使用概述
Jan 02 #Javascript
javascript数组快速打乱重排的方法
Jan 02 #Javascript
利用进制转换压缩数字函数分享
Jan 02 #Javascript
利用window.name实现windowStorage代码分享
Jan 02 #Javascript
点击按钮自动加关注的代码(sina微博/QQ空间/人人网/腾讯微博)
Jan 02 #Javascript
You might like
怎样才能成为PHP高手?学会“懒惰”的编程
2006/12/05 PHP
ExtJS与PHP、MySQL实现存储的方法
2010/04/02 PHP
用mysql_fetch_array()获取当前行数据的方法详解
2013/06/05 PHP
php中get_defined_constants函数用法实例分析
2015/05/12 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
2016/08/12 PHP
php实现微信企业转账功能
2018/10/02 PHP
jQuery回车实现登录简单实现
2013/08/20 Javascript
JS短路原理的应用示例 精简代码的途径
2013/12/13 Javascript
JavaScript获取当前页面上的指定对象示例代码
2014/02/28 Javascript
js取得html iframe中的元素和变量值
2014/06/30 Javascript
原生javascript+css3编写的3D魔方动画旋扭特效
2016/03/14 Javascript
vue.js+Element实现表格里的增删改查
2017/01/18 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
详解vue2.0 使用动态组件实现 Tab 标签页切换效果(vue-cli)
2017/08/30 Javascript
layui 优化button按钮和弹出框的方法
2018/08/15 Javascript
微信小程序当前时间时段选择器插件使用方法详解
2018/12/28 Javascript
[07:27]DOTA2卡尔工作室 英雄介绍水晶室女篇
2013/06/21 DOTA
python中的对象拷贝示例 python引用传递
2014/01/23 Python
Python打包文件夹的方法小结(zip,tar,tar.gz等)
2016/09/18 Python
python的paramiko模块实现远程控制和传输示例
2017/10/13 Python
python函数的万能参数传参详解
2019/07/26 Python
简单了解python变量的作用域
2019/07/30 Python
Python 分发包中添加额外文件的方法
2019/08/16 Python
在django中查询获取数据,get, filter,all(),values()操作
2020/08/09 Python
python3.7 openpyxl 在excel单元格中写入数据实例
2020/09/01 Python
台湾旅游网站:灿星旅游
2018/10/11 全球购物
微观物理专业自荐信
2014/01/26 职场文书
化学系大学生自荐信范文
2014/03/01 职场文书
伦敦奥运会口号
2014/06/13 职场文书
求职信的正确写法
2014/07/10 职场文书
党的群众路线教育实践活动对照检查材料
2014/09/22 职场文书
婚前保证书范文
2015/02/28 职场文书
年度考核个人总结
2015/03/06 职场文书
Python 游戏大作炫酷机甲闯关游戏爆肝数千行代码实现案例进阶
2021/10/16 Python
Nginx工作模式及代理配置的使用细节
2022/03/21 Servers
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android