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 相关文章推荐
提高网站信任度的技巧
Oct 17 Javascript
JavaScript调用后台的三种方法实例
Oct 17 Javascript
使用JS实现jQuery的addClass, removeClass, hasClass函数功能
Oct 31 Javascript
JS基于VML技术实现的五角星礼花效果代码
Oct 26 Javascript
jQuery dateRangePicker插件使用方法详解
Jul 28 jQuery
JS简单实现点击跳转登陆邮箱功能的方法
Oct 31 Javascript
详解Vue路由钩子及应用场景(小结)
Nov 07 Javascript
vue.js2.0点击获取自己的属性和jquery方法
Feb 23 jQuery
利用angular自动编译andriod APK的绕坑经历分享
Mar 08 Javascript
js表达式与运算符简单操作示例
Feb 15 Javascript
vue中实现图片压缩 file文件的方法
May 28 Javascript
浅谈es6中的元编程
Dec 01 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
filemanage功能中用到的lib.js
2007/04/08 Javascript
网上抓的一个特效
2007/05/11 Javascript
javascript测试题练习代码
2012/10/10 Javascript
3分钟写出来的Jquery版checkbox全选反选功能
2013/10/23 Javascript
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
JavaScript判断一个字符串是否包含指定子字符串的方法
2015/03/18 Javascript
Webpack 实现 AngularJS 的延迟加载
2016/03/02 Javascript
js常用的继承--组合式继承
2017/03/06 Javascript
从零开始学习Node.js系列教程五:服务器监听方法示例
2017/04/13 Javascript
微信小程序中使用javascript 回调函数
2017/05/11 Javascript
原生JS实现日历组件的示例代码
2017/09/22 Javascript
详解微信小程序-canvas绘制文字实现自动换行
2019/04/26 Javascript
js中!和!!的区别与用法
2020/05/09 Javascript
element中table高度自适应的实现
2020/10/21 Javascript
python求众数问题实例
2014/09/26 Python
Python RuntimeError: thread.__init__() not called解决方法
2015/04/28 Python
用Python抢过年的火车票附源码
2015/12/07 Python
Python 实现链表实例代码
2017/04/07 Python
python模块之paramiko实例代码
2018/01/31 Python
python ipset管理 增删白名单的方法
2019/01/14 Python
Python基础之文件读取的讲解
2019/02/16 Python
使用Django xadmin 实现修改时间选择器为不可输入状态
2020/03/30 Python
Python日志打印里logging.getLogger源码分析详解
2021/01/17 Python
CSS3模拟IOS滑动开关效果
2016/09/28 HTML / CSS
美国体育用品商店:Paragon Sports
2017/10/08 全球购物
含预算的公司户外活动方案
2014/08/16 职场文书
挂职学习心得体会
2014/09/09 职场文书
2014银行领导班子四风对照检查材料思想汇报
2014/09/25 职场文书
党支部四风整改方案
2014/10/25 职场文书
小学体育教学随笔
2015/08/14 职场文书
餐厅如何利用“营销策略”扭转亏本局面
2019/10/15 职场文书
PHP 对接美团大众点评团购券(门票)的开发步骤
2021/04/03 PHP
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
2021/04/24 Python
TV动画《间谍过家家》公开PV
2022/03/20 日漫
Nginx设置HTTPS的方法步骤 443证书配置方法
2022/03/21 Servers
Golang MatrixOne使用介绍和汇编语法
2022/04/19 Golang