函数四种调用模式以及其中的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 操作下拉列表框实现代码
Feb 22 Javascript
JavaScript用Number方法实现string转int
May 13 Javascript
简述JavaScript对传统文档对象模型的支持
Jun 16 Javascript
用js读写cookie的简单方法(推荐)
Aug 08 Javascript
AngularJS入门教程之静态模板详解
Aug 18 Javascript
JQuery Dialog对话框 不能通过Esc关闭的原因分析及解决办法
Jan 18 Javascript
jquery 校验中国身份证号码实例详解
Apr 11 jQuery
angularJS 发起$http.post和$http.get请求的实现方法
May 18 Javascript
写给小白看的JavaScript异步
Nov 29 Javascript
vue-cli 引入jQuery,Bootstrap,popper的方法
Sep 03 jQuery
Vue 3.0双向绑定原理的实现方法
Oct 23 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
Jun 19 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以及MYSQL日期比较方法
2012/11/29 PHP
PHP中的Trait 特性及作用
2016/04/03 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
在JavaScript中,为什么要尽可能使用局部变量?
2009/04/06 Javascript
JavaScript 创建对象
2009/07/17 Javascript
JavaScript中的eval()函数详解
2013/08/22 Javascript
JS替换字符串中字符即替换全部而不是第一个
2014/06/04 Javascript
JavaScript中toString()方法的使用详解
2015/06/05 Javascript
jquery衣服颜色选取插件效果代码分享
2015/08/28 Javascript
jQuery中bind(),live(),delegate(),on()绑定事件方法实例详解
2016/01/19 Javascript
如何高效率去掉js数组中的重复项
2016/04/12 Javascript
JavaScript数据结构之链表的实现
2017/03/19 Javascript
JavaScript实现打地鼠小游戏
2020/04/23 Javascript
JavaScript之RegExp_动力节点Java学院整理
2017/06/29 Javascript
JavaScript实现的搜索及高亮显示功能示例
2017/08/14 Javascript
C#实现将一个字符转换为整数
2017/12/12 Javascript
js使用Promise实现简单的Ajax缓存
2018/11/14 Javascript
微信小程序分享海报生成的实现方法
2018/12/10 Javascript
React 使用Hooks简化受控组件的状态绑定
2019/03/18 Javascript
Vue v-model组件封装(类似弹窗组件)
2020/01/08 Javascript
前端深入理解Typescript泛型概念
2020/03/09 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
python实现查询苹果手机维修进度
2015/03/16 Python
解读Python中degrees()方法的使用
2015/05/18 Python
使用tensorflow实现线性回归
2018/09/08 Python
使用python模拟高斯分布例子
2019/12/09 Python
PyQt5多线程防卡死和多窗口用法的实现
2020/09/15 Python
欧克利英国官网:Oakley英国
2019/08/24 全球购物
工作岗位说明书模板
2014/05/09 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
夏季药店促销方案
2014/08/22 职场文书
党员干部形式主义个人整改措施
2014/09/17 职场文书
2014年教研组工作总结
2014/11/26 职场文书
个人廉洁自律总结
2015/03/06 职场文书
2015年员工工作表现评语
2015/03/25 职场文书
Spring JPA 增加字段执行异常问题及解决
2022/06/10 Java/Android