函数四种调用模式以及其中的this指向


Posted in Javascript onJanuary 16, 2017

第一种:函数直接执行模式

function add(a,b){
   console.log(this);
   return a+b;
  }
 add(10,20)//this===window

第二种:对象方法的调用模式

var obj={
   name:'aaa',
   age:20,
   said:function(){
    console.log(this);
   }
  }
obj.said();//this===obj,此处this指代被调用者

第三种:构造器的调用模式

function School(){
   this.said=function(){
    console.log(this);
   }
  }
var nanj=new School();
nanj.said();//对象调用自己的方法,this===nanj,类似上面

第四种:call和apply调用模式

function change(a,b){
   this.detial=a*b;
   console.log(this);
  }
  var p={};
  change.call(p,4,5);//此处的this===p
  console.log(p.detial);
  var q=[];
  change.call(q,5,10)//this===q
  console.log(q.detial);
  //apply和call一样的用法,只不过apply第二个参数用数组进行传递
  var arr=[];
  change.apply(arr,[10,10]);//this===arr
  console.log(arr.detial);
  var str={};
  change.apply(str,[20,20]);//this===str
  console.log(str.detial);

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
基于jquery+thickbox仿校内登录注册框
Jun 07 Javascript
JavaScript isArray()函数判断对象类型的种种方法
Oct 11 Javascript
javascript字符串拼接的效率问题
Dec 25 Javascript
dojo随手记 gird组件引用
Feb 24 Javascript
JQuery的AJAX实现文件下载的小例子
May 15 Javascript
js滑动提示效果代码分享
Mar 10 Javascript
JS实现无缝循环marquee滚动效果
May 22 Javascript
一步步教你利用Canvas对图片进行处理
Sep 19 Javascript
vue2.0 资源文件assets和static的区别详解
Apr 08 Javascript
Taro集成Redux快速上手的方法示例
Jun 21 Javascript
JavaScript之数组扁平化详解
Jun 03 Javascript
Vue触发隐藏input file的方法实例详解
Aug 14 Javascript
js实现导航栏中英文切换效果
Jan 16 #Javascript
Bootstrap面板使用方法
Jan 16 #Javascript
codeMirror插件使用讲解
Jan 16 #Javascript
微信小程序 图片边框解决方法
Jan 16 #Javascript
微信小程序 scroll-view隐藏滚动条详解
Jan 16 #Javascript
微信小程序 video详解及简单实例
Jan 16 #Javascript
Vue系列:通过vue-router如何传递参数示例
Jan 16 #Javascript
You might like
php从数据库查询结果生成树形列表的方法
2015/04/17 PHP
PHP获取当前日期及本周一是几月几号的方法
2017/03/28 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
再谈Yii Framework框架中的事件event原理与应用
2020/04/07 PHP
javascript IE中的DOM ready应用技巧
2008/07/23 Javascript
JavaScript函数获取事件源的小例子
2014/05/14 Javascript
详解用vue-cli来搭建vue项目和webpack
2017/04/20 Javascript
JavaScript之Canvas_动力节点Java学院整理
2017/07/04 Javascript
iview table render集成switch开关的实例
2018/03/14 Javascript
js中DOM事件绑定分析
2018/03/18 Javascript
javascript实现简易聊天室
2019/07/12 Javascript
解决layui轮播图有数据不显示的情况
2019/09/16 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
JavaScript实现点击图片换背景
2020/11/20 Javascript
使用原生javascript开发计算器实例代码
2021/02/21 Javascript
[49:56]VG vs Optic 2018国际邀请赛小组赛BO2 第一场 8.19
2018/08/21 DOTA
Python设计实现的计算器功能完整实例
2017/08/18 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
2017/11/29 Python
对python的文件内注释 help注释方法
2018/05/23 Python
Python pyinotify模块实现对文档的实时监控功能方法
2018/10/13 Python
Python 利用pydub库操作音频文件的方法
2019/01/09 Python
远程部署工具Fabric详解(支持Python3)
2019/07/04 Python
Python实现的企业粉丝抽奖功能示例
2019/07/26 Python
如何用Python来搭建一个简单的推荐系统
2019/08/07 Python
Python调用Windows API函数编写录音机和音乐播放器功能
2020/01/05 Python
Python爬虫JSON及JSONPath运行原理详解
2020/06/04 Python
python实现二分查找算法
2020/09/18 Python
python 实现IP子网计算
2021/02/18 Python
Javascript如何发送一个Ajax请求
2015/01/26 面试题
动物学专业毕业生求职信
2013/10/11 职场文书
2014医学院领导班子对照检查材料思想汇报
2014/09/19 职场文书
惊涛骇浪观后感
2015/06/05 职场文书
学生会干部任命书
2015/09/21 职场文书
《金钱的魔力》教学反思
2016/02/20 职场文书
大学生奖学金获奖感言(范文)
2019/08/15 职场文书
MySQL 使用事件(Events)完成计划任务
2021/05/24 MySQL