函数四种调用模式以及其中的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 相关文章推荐
textarea不能通过maxlength属性来限制字数的解决方法
Sep 01 Javascript
IE中getElementsByName()对有些元素无效的解决方案
Sep 28 Javascript
jquery实现简单实用的打分程序实例
Jul 23 Javascript
使用JQuery在线制作ppt并在线演示源码特效
Sep 08 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
May 10 Javascript
bootstrap模态框跳转到当前模板页面 框消失了而背景存在问题的解决方法
Nov 30 Javascript
基于vue的下拉刷新指令和滚动刷新指令
Dec 23 Javascript
Vue声明式渲染详解
May 17 Javascript
原生JS实现隐藏显示图片 JS实现点击切换图片效果
Jan 27 Javascript
VeeValidate在vue项目里表单校验应用案例
May 09 Javascript
js脚本中执行java后台代码方法解析
Oct 11 Javascript
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
Aug 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
PHP检测用户是否关闭浏览器的方法
2016/02/14 PHP
VSCode+PHPstudy配置PHP开发环境的步骤详解
2020/08/20 PHP
小议Javascript中的this指针
2010/03/18 Javascript
表单提交前触发函数返回true表单才会提交
2014/03/11 Javascript
JavaScript中的闭包(Closure)详细介绍
2014/12/30 Javascript
jQuery动态添加及删除表单上传元素的方法(附demo源码下载)
2016/01/15 Javascript
浅谈JavaScript 数据属性和访问器属性
2016/09/01 Javascript
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
React Native中NavigatorIOS组件的简单使用详解
2018/01/27 Javascript
基于vue-ssr的静态网站生成器VuePress 初体验
2018/04/17 Javascript
vue设计一个倒计时秒杀的组件详解
2019/04/06 Javascript
关于Vue源码vm.$watch()内部原理详解
2019/04/26 Javascript
JS实现处理时间,年月日,星期的公共方法示例
2019/05/31 Javascript
vue实现pdf文档在线预览功能
2019/11/26 Javascript
[37:50]VP vs TNC Supermajor小组赛B组 BO3 第一场 6.2
2018/06/03 DOTA
[55:26]DOTA2-DPC中国联赛 正赛 Aster vs LBZS BO3 第一场 2月23日
2021/03/11 DOTA
举例讲解Python中的死锁、可重入锁和互斥锁
2015/11/05 Python
Python编程判断一个正整数是否为素数的方法
2017/04/14 Python
Python基于pygame模块播放MP3的方法示例
2017/09/30 Python
python with提前退出遇到的坑与解决方案
2018/01/05 Python
python中pika模块问题的深入探究
2018/10/13 Python
如何利用Python分析出微信朋友男女统计图
2019/01/25 Python
Python实现微信翻译机器人的方法
2019/08/13 Python
全面解析CSS Media媒体查询使用操作(推荐)
2017/08/15 HTML / CSS
Calphalon美国官网:美国顶级锅具品牌
2020/02/05 全球购物
Hurley官方网站:扎根于海滩生活方式的全球青年文化品牌
2020/05/18 全球购物
介绍一下Linux中的链接
2016/05/28 面试题
演讲稿的格式及范文
2014/08/22 职场文书
完整版商业计划书
2014/09/15 职场文书
关于感谢信的范文
2015/01/23 职场文书
投诉信回复范文
2015/07/03 职场文书
环保建议书作文400字
2015/09/14 职场文书
CSS3新特性详解(五):多列columns column-count和flex布局
2021/04/30 HTML / CSS
pytorch 带batch的tensor类型图像显示操作
2021/05/20 Python
聊聊Lombok中的@Builder注解使用教程
2021/11/17 Java/Android
Fluentd搭建日志收集服务
2022/09/23 Servers