函数四种调用模式以及其中的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 面向对象编程基础:封装
Aug 21 Javascript
新发现一个骗链接的方法(js读取cookies)
Jan 11 Javascript
给事件响应函数传参数的四种方式小结
Dec 05 Javascript
jquery实现的图片点击滚动效果
Apr 29 Javascript
JS运动框架之分享侧边栏动画实例
Mar 03 Javascript
javascript无刷新评论实现方法
May 13 Javascript
自动适应iframe右边的高度
Dec 22 Javascript
基于jQuery实现选项卡效果
Jan 04 Javascript
JavaScript通过filereader接口读取文件
May 10 Javascript
JavaScript实现全选取消效果
Dec 14 Javascript
总结JavaScript在IE9之前版本中内存泄露问题
Apr 28 Javascript
TypeScript 运行时类型检查补充工具
Sep 28 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
Erlang的运算符(比较运算符,数值运算符,移位运算符,逻辑运算符)
2012/07/23 PHP
浏览器关闭后,能继续执行的php函数(ignore_user_abort)
2012/08/01 PHP
FormValidate 表单验证功能代码更新并提供下载
2008/08/23 Javascript
JavaScript 对象模型 执行模型
2009/12/06 Javascript
Javascript string 扩展库代码
2010/04/09 Javascript
Jquery仿淘宝京东多条件筛选可自行结合ajax加载示例
2013/08/28 Javascript
node.js中的console.dir方法使用说明
2014/12/10 Javascript
jquery获取url参数及url加参数的方法
2015/10/26 Javascript
浅析JS异步加载进度条
2016/05/05 Javascript
jQuery为DOM动态追加事件的方法
2017/02/16 Javascript
JS实现的自动打字效果示例
2017/03/10 Javascript
nodejs multer实现文件上传与下载
2017/05/10 NodeJs
浅谈Vue父子组件和非父子组件传值问题
2017/08/22 Javascript
Vue 中mixin 的用法详解
2018/04/23 Javascript
浅谈vue首屏加载优化
2018/06/28 Javascript
使用vue根据状态添加列表数据和删除列表数据的实例
2018/09/29 Javascript
iview通过Dropdown(下拉菜单)实现的右键菜单
2018/10/26 Javascript
Python Web开发模板引擎优缺点总结
2014/05/06 Python
Python2.7简单连接与操作MySQL的方法
2016/04/27 Python
Python断言assert的用法代码解析
2018/02/03 Python
selenium+python自动化测试之鼠标和键盘事件
2019/01/23 Python
浅谈tensorflow之内存暴涨问题
2020/02/05 Python
python实现将列表中各个值快速赋值给多个变量
2020/04/02 Python
Keras: model实现固定部分layer,训练部分layer操作
2020/06/28 Python
PyQt5多线程防卡死和多窗口用法的实现
2020/09/15 Python
详解Scrapy Redis入门实战
2020/11/18 Python
专营店会计助理岗位职责
2013/11/29 职场文书
中英文求职信范文
2014/01/27 职场文书
翻译学院毕业生自荐书
2014/02/02 职场文书
教育学习自我评价
2014/02/03 职场文书
护士进修自我鉴定
2014/02/07 职场文书
路政管理求职信
2014/06/18 职场文书
2014年敬老院工作总结
2014/12/08 职场文书
2015年秋季校长开学典礼致辞
2015/07/29 职场文书
什么是创业计划书?什么是商业计划书?这里一一解答
2019/07/12 职场文书
导游词之阆中古城
2019/12/23 职场文书