函数四种调用模式以及其中的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 实现的点击复制代码
Mar 24 Javascript
javascript 复杂的嵌套环境中输出单引号和双引号
May 26 Javascript
ajax 同步请求和异步请求的差异分析
Jul 04 Javascript
ASP.NET jQuery 实例9  通过控件hyperlink实现返回顶部效果
Feb 03 Javascript
JS使用for循环遍历Table的所有单元格内容
Aug 21 Javascript
JavaScript中使用Math.floor()方法对数字取整
Jun 15 Javascript
关于Bootstrap弹出框无法调用问题的解决办法
Mar 10 Javascript
jQuery简单创建节点的方法
Sep 09 Javascript
原生js实现瀑布流布局
Mar 08 Javascript
解决bootstrap中下拉菜单点击后不关闭的问题
Aug 10 Javascript
学习RxJS之JavaScript框架Cycle.js
Jun 17 Javascript
原生JavaScript实现贪吃蛇游戏
Nov 04 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的网址
2006/11/25 PHP
在IIS7.0下面配置PHP 5.3.2运行环境的方法
2010/04/13 PHP
php5 apache 2.2 webservice 创建与配置(java)
2011/01/27 PHP
php操作JSON格式数据的实现代码
2011/12/24 PHP
Yii 访问 Gii(脚手架)时出现 403 错误
2018/06/06 PHP
判断客户端浏览器是否安装了Flash插件的多种方法
2010/08/11 Javascript
js屏蔽鼠标键盘(右键/Ctrl+N/Shift+F10/F11/F5刷新/退格键)
2013/01/24 Javascript
HTML页面滚动时获取离页面顶部的距离2种实现方法
2013/09/05 Javascript
javascript将浮点数转换成整数的三个方法
2014/06/23 Javascript
浅谈node.js中async异步编程
2015/10/22 Javascript
用js控件div的滚动条,让它在内容更新时自动滚到底部的实现方法
2016/10/27 Javascript
AngularJS读取JSON及XML文件的方法示例
2017/05/25 Javascript
Bootstrap 3多级下拉菜单实例
2017/11/23 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
vue无限轮播插件代码实例
2019/05/10 Javascript
JavaScript中CreateTextFile函数
2020/08/30 Javascript
Python设计模式中单例模式的实现及在Tornado中的应用
2016/03/02 Python
Python3实现发送QQ邮件功能(附件)
2020/12/23 Python
基于python 爬虫爬到含空格的url的处理方法
2018/05/11 Python
python指定写入文件时的编码格式方法
2018/06/07 Python
Python for循环中的陷阱详解
2018/07/13 Python
对django后台admin下拉框进行过滤的实例
2019/07/26 Python
python实现各种插值法(数值分析)
2019/07/30 Python
基于pytorch的保存和加载模型参数的方法
2019/08/17 Python
python GUI库图形界面开发之PyQt5滑块条控件QSlider详细使用方法与实例
2020/02/28 Python
css3图片边框border-image的用法
2017/06/30 HTML / CSS
h5封装下拉刷新
2020/08/25 HTML / CSS
HTML5超文本标记语言的实现方法
2020/09/24 HTML / CSS
英国的屈臣氏:Boots博姿
2017/12/23 全球购物
初三新学期计划书
2014/05/03 职场文书
社区安全生产月活动总结
2014/07/05 职场文书
2015初中生物教研组工作总结
2015/07/21 职场文书
2019年个人工作总结范文(3篇)
2019/08/27 职场文书
描写九月优美句子(39条)
2019/09/11 职场文书
业余无线电通联Q语
2022/02/18 无线电
python垃圾回收机制原理分析
2022/04/13 Python