函数四种调用模式以及其中的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 相关文章推荐
js滚动条多种样式,推荐
Feb 05 Javascript
JavaScript Event学习第六章 事件的访问
Feb 07 Javascript
单击复制文字兼容各浏览器的完美解决方案
Jul 04 Javascript
Node.js中AES加密和其它语言不一致问题解决办法
Mar 10 Javascript
JS实现三个层重叠点击互相切换的方法
Oct 06 Javascript
详解原生JavaScript实现jQuery中AJAX处理的方法
May 10 Javascript
ES6中class类用法实例浅析
Apr 06 Javascript
详解vue.js 开发环境搭建最简单攻略
Jun 12 Javascript
JavaScript实现滑动导航栏效果
Aug 30 Javascript
vue.js项目 el-input 组件 监听回车键实现搜索功能示例
Aug 25 Javascript
监听angularJs列表数据是否渲染完毕的方法示例
Nov 07 Javascript
微信小程序 wepy框架与iview-weapp的用法详解
Apr 10 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
MySQL相关说明
2007/01/15 PHP
php操作(删除,提取,增加)zip文件方法详解
2015/03/12 PHP
php自动更新版权信息显示的方法
2015/06/19 PHP
php查询操作实现投票功能
2016/05/09 PHP
Laravel实现自定义错误输出内容的方法
2016/10/10 PHP
详解Laravel服务容器的绑定与解析
2019/11/05 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
jQuery设置div一直在页面顶部显示的方法
2013/10/24 Javascript
基于socket.io和node.js搭建即时通信系统
2014/07/30 Javascript
通过XMLHttpRequest和jQuery实现ajax的几种方式
2015/08/28 Javascript
一篇文章掌握RequireJS常用知识
2016/01/26 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
2017/02/06 Javascript
jQuery日程管理控件glDatePicker用法详解
2017/03/29 jQuery
vue项目打包之开发环境和部署环境的实现
2020/04/23 Javascript
如何手动实现一个 JavaScript 模块执行器
2020/10/16 Javascript
详解webpack的clean-webpack-plugin插件报错
2020/10/16 Javascript
Python网络爬虫出现乱码问题的解决方法
2017/01/05 Python
Python实现字典去除重复的方法示例
2017/07/31 Python
浅谈使用Python内置函数getattr实现分发模式
2018/01/22 Python
用Python将结果保存为xlsx的方法
2019/01/28 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
Python3.6安装卸载、执行命令、执行py文件的方法详解
2020/02/20 Python
使用PyQt5实现图片查看器的示例代码
2020/04/21 Python
python 串行执行和并行执行实例
2020/04/30 Python
HTML5页面无缝闪开的问题及解决方案
2020/06/11 HTML / CSS
CAT鞋加拿大官网:CAT Footwear加拿大
2020/08/05 全球购物
Ajax实现页面无刷新留言效果
2021/03/24 Javascript
公立医院改革实施方案
2014/03/14 职场文书
个人工作主要事迹
2014/05/08 职场文书
119消防日活动总结
2014/08/29 职场文书
2015世界地球日活动总结
2015/02/09 职场文书
幼儿园门卫安全责任书
2015/05/08 职场文书
正规借条模板
2015/05/26 职场文书
电影复兴之路观后感
2015/06/02 职场文书
《我的美好婚事》动画化决定纪念插画与先导PV公开
2022/04/06 日漫
MySQL 计算连续登录天数
2022/05/11 MySQL