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中的var_dump函数实现代码
Sep 07 Javascript
JavaScript 题型问答有答案参考
Feb 17 Javascript
Jquery插件之打造自定义的select标签
Nov 30 Javascript
了解一点js的Eval函数
Jul 26 Javascript
JS实现iframe自适应高度的方法(兼容IE与FireFox)
Jun 24 Javascript
js removeChild 方法深入理解
Aug 16 Javascript
js闭包用法实例详解
Dec 13 Javascript
jQuery插件FusionWidgets实现的AngularGauge图效果示例【附demo源码】
Mar 23 jQuery
node.JS事件机制与events事件模块的使用方法详解
Feb 06 Javascript
如何配置vue.config.js 处理static文件夹下的静态文件
Jun 19 Javascript
使用纯前端JavaScript实现Excel导入导出方法过程详解
Aug 07 Javascript
JS闭包原理及其使用场景解析
Dec 03 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字符串中特殊符号的过滤方法介绍
2014/02/18 PHP
PHP使用flock实现文件加锁的方法
2015/07/01 PHP
PHP面向对象程序设计实例分析
2016/01/26 PHP
使用PHP json_decode可能遇到的坑与解决方法
2017/08/03 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
2017/08/25 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
javascript下利用arguments实现string.format函数
2010/08/24 Javascript
javascript获取和判断浏览器窗口、屏幕、网页的高度、宽度等
2014/05/08 Javascript
jquery ztree实现下拉树形框使用到了json数据
2014/05/14 Javascript
做web开发 先学JavaScript
2014/12/12 Javascript
jQuery对指定元素中指定字符串进行替换的方法
2015/03/17 Javascript
javascript高级编程之函数表达式 递归和闭包函数
2015/11/29 Javascript
JavaScript对象数组排序函数及六个用法
2015/12/23 Javascript
JavaScript常用代码书写规范的超全面总结
2016/09/11 Javascript
如何快速上手Vuex
2017/02/14 Javascript
Vue 获取数组键名的方法
2018/06/21 Javascript
Vue 中文本内容超出规定行数后展开收起的处理的实现方法
2019/04/28 Javascript
Vue数据驱动表单渲染,轻松搞定form表单
2019/07/19 Javascript
layui radio点击事件实现input显示和隐藏的例子
2019/09/02 Javascript
Nodejs技巧之Exceljs表格操作用法示例
2019/11/06 NodeJs
[56:12]LGD vs Optic Supermajor小组赛D组胜者组决赛 BO3 第一场 6.3
2018/06/04 DOTA
[42:00]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第一场 12.13
2020/12/17 DOTA
python实现根据窗口标题调用窗口的方法
2015/03/13 Python
python通过定义一个类实例作为ftp回调方法
2015/05/04 Python
python 删除非空文件夹的实例
2018/04/26 Python
python实现简单flappy bird
2018/12/24 Python
利用Python进行图像的加法,图像混合(附代码)
2019/07/14 Python
关于pytorch多GPU训练实例与性能对比分析
2019/08/19 Python
goodhealth官方海外旗舰店:新西兰国民营养师
2017/12/15 全球购物
给男朋友的道歉信
2014/01/12 职场文书
《小草和大树》教学反思
2014/02/16 职场文书
人民教师求职自荐信
2014/03/12 职场文书
关于安全的演讲稿
2014/05/09 职场文书
详解Python牛顿插值法
2021/05/11 Python
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python
Python基本的内置数据类型及使用方法
2022/04/13 Python