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 相关文章推荐
JavaScript 常见对象类创建代码与优缺点分析
Dec 07 Javascript
jquery判断checkbox(复选框)是否被选中的代码
Oct 20 Javascript
自己动手制作jquery插件之自动添加删除行功能介绍
Oct 14 Javascript
Javascript中对象继承的实现小例
May 12 Javascript
jQuery+PHP星级评分实现方法
Oct 02 Javascript
Angularjs中controller的三种写法分享
Sep 21 Javascript
jQuery实现拼图小游戏(实例讲解)
Jul 24 jQuery
js处理包含中文的字符串实例
Oct 11 Javascript
浅谈如何使用 webpack 优化资源
Oct 20 Javascript
简单介绍react redux的中间件的使用
Apr 06 Javascript
webpack+vue-cli项目中引入外部非模块格式js的方法
Sep 28 Javascript
js计算最大公约数和最小公倍数代码实例
Sep 11 Javascript
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中如何防止表单的重复提交
2013/08/02 PHP
ThinkPHP5.1验证码功能实现的示例代码
2020/06/08 PHP
用JavaScript编写COM组件的步骤
2009/03/17 Javascript
javascript 强制刷新页面的实现代码
2009/12/13 Javascript
jquery实现的带缩略图的焦点图片切换(自动播放/响应鼠标动作)
2013/01/23 Javascript
有关于JS辅助函数inherit()的问题
2013/04/07 Javascript
将Datatable转化成json发送前台实现思路
2013/09/06 Javascript
推荐9款炫酷的基于jquery的页面特效
2014/12/07 Javascript
js实现编辑div节点名称的方法
2014/12/17 Javascript
js创建对象的方式总结
2015/01/10 Javascript
jQuery实现页面内锚点平滑跳转特效的方法总结
2015/05/11 Javascript
基于javascript实现彩票随机数生成(升级版)
2020/04/17 Javascript
angular+ionic 的app上拉加载更新数据实现方法
2017/01/16 Javascript
jquery Ajax实现Select动态添加数据
2017/06/08 jQuery
react 兄弟组件如何调用对方的方法示例
2018/10/23 Javascript
微信小程序使用canvas的画图操作示例
2019/01/18 Javascript
JS实现图片懒加载(lazyload)过程详解
2020/04/02 Javascript
使用Python装饰器在Django框架下去除冗余代码的教程
2015/04/16 Python
python中requests使用代理proxies方法介绍
2017/10/25 Python
python+opencv实现动态物体识别
2018/01/09 Python
python实现自动登录
2018/09/17 Python
python实现从尾到头打印单链表操作示例
2020/02/22 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
一款纯css3实现的颜色渐变按钮的代码教程
2014/11/12 HTML / CSS
Kivari官网:在线购买波西米亚服装
2018/10/29 全球购物
俄罗斯在线购买飞机票、火车票、巴士票网站:Tutu.ru
2020/03/16 全球购物
如何掌握自荐信格式呢
2013/11/19 职场文书
英文简历自荐信范文
2013/12/11 职场文书
餐厅考勤管理制度
2014/01/28 职场文书
仓管岗位职责范本
2014/02/08 职场文书
课内比教学心得体会
2014/09/09 职场文书
房屋租赁合同协议书范本
2014/10/19 职场文书
2019年聘任书的写作格式及范文!
2019/07/03 职场文书
Django如何与Ajax交互
2021/04/29 Python
MySQL中日期型单行函数代码详解
2021/06/21 MySQL
Redis主从配置和底层实现原理解析(实战记录)
2021/06/30 Redis