函数四种调用模式以及其中的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 相关文章推荐
JavaScript中的事件处理
Jan 16 Javascript
safari,opera嵌入iframe页面cookie读取问题解决方法
Jun 23 Javascript
javascript之bind使用介绍
Oct 09 Javascript
六款帮助你实现惊艳视差滚动效果的jQuery插件
Sep 14 Javascript
优化Node.js Web应用运行速度的10个技巧
Sep 03 Javascript
分享js粘帖屏幕截图到web页面插件screenshot-paste
Aug 21 Javascript
深入理解Javascript中的自执行匿名函数
Jun 03 Javascript
jquery文字填写自动高度的实现方法
Nov 07 Javascript
JavaScript条件判断_动力节点Java学院整理
Jun 26 Javascript
获取layer.open弹出层的返回值方法
Aug 20 Javascript
JS实现的杨辉三角【帕斯卡三角形】算法示例
Feb 26 Javascript
解决vue组件props传值对象获取不到的问题
Jun 06 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
如何用phpmyadmin设置mysql数据库用户的权限
2012/01/09 PHP
PHP curl批处理及多请求并发实现方法分析
2018/08/15 PHP
JS解析XML的实现代码
2009/11/12 Javascript
禁止选中文字兼容IE、Chrome、FF等
2013/09/04 Javascript
实例讲解JS中数组Array的操作方法
2014/05/09 Javascript
node.js中的console.dir方法使用说明
2014/12/10 Javascript
JavaScript编写推箱子游戏
2015/07/07 Javascript
JS组件Bootstrap Table表格多行拖拽效果实现代码
2015/12/08 Javascript
源码分析Vue.js的监听实现教程
2017/04/23 Javascript
Js中将Long转换成日期格式的实现方法
2018/06/05 Javascript
微信小程序图片加载失败时替换为默认图片的方法
2019/12/09 Javascript
vuejs element table 表格添加行,修改,单独删除行,批量删除行操作
2020/07/18 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
从源码角度来回答keep-alive组件的缓存原理
2021/01/18 Javascript
[03:46]DAC趣味视频-中文考试.mp4
2017/04/02 DOTA
提升Python程序运行效率的6个方法
2015/03/31 Python
使用Python实现一个简单的项目监控
2015/03/31 Python
Python闭包实现计数器的方法
2015/05/05 Python
以视频爬取实例讲解Python爬虫神器Beautiful Soup用法
2016/01/20 Python
Python连接MySQL并使用fetchall()方法过滤特殊字符
2016/03/13 Python
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
Python简单生成随机数的方法示例
2018/03/31 Python
详解pandas库pd.read_excel操作读取excel文件参数整理与实例
2019/02/17 Python
Django对接支付宝实现支付宝充值金币功能示例
2019/12/17 Python
解决pip安装的第三方包在PyCharm无法导入的问题
2020/10/15 Python
Pycharm plot独立窗口显示的操作
2020/12/11 Python
html5实现多图片预览上传及点击可拖拽控件
2018/03/15 HTML / CSS
Spartoo芬兰:欧洲最大的网上鞋店
2016/08/28 全球购物
Kidsroom台湾:来自德国的婴儿用品
2017/12/11 全球购物
.NET面试10题
2014/02/24 面试题
运动会方队口号
2014/06/07 职场文书
乡镇机关党员民主评议表自我评价
2014/09/21 职场文书
体育个人工作总结
2015/02/09 职场文书
新年晚会主持词开场白
2015/05/28 职场文书
2016年保险公众宣传日活动总结
2016/04/05 职场文书
mysql函数之截取字符串的实现
2022/08/14 MySQL