Function.prototype.apply()与Function.prototype.call()小结


Posted in Javascript onApril 27, 2016

老是忘掉这两个东东的用下,写下来做个记录吧。
他们作用是一模一样的,只是传入的参数不一样

apply

apply接受两个参数,第一个制定了函数体内this对象的指向,第二个参数为一个带下标的集合(可遍历对象),apply方法把这个集合中的元素作为参数传递给被调用的函数:

var func = function(a, c, c){
  alert([a,b,c]); //[1,2,3]
}
func.apply(null, [1,2,3]);

call

call传入的参数不固定,和apply相同的是,第一个参数也是代表函数体内的this指向,第二个参数开始往后,每个参数被依次传入函数:

var func = function(a, b, c){
  alert([a,b,c]); //[1,2,3]
}
func.call(null, 1,2,3);

call是aplly的一颗语法糖。如果第一个参数为null,函数体内的this指向宿主对象,在浏览器中是window。

call和apply的用途

1.改变this指向

上面的例子就是啦

2.Function.prototype.bind

模拟Function.prototype.bind

Function.prototype.bind = function(context){
  var self = this;
  return function(){
    return self.apply(context, arguments);
  }
};

var obj = {
  name: 'cxs'
};

var func = function(){
  alert(this.name); //cxs
}.bind(obj);

fun();
Javascript 相关文章推荐
js切换光标示例代码
Oct 10 Javascript
JavaScript中的关联数组问题
Mar 04 Javascript
jQuery实现延迟跳转的方法
Jun 05 Javascript
3种js实现string的substring方法
Nov 09 Javascript
基于BootStrap环境写jQuery tabs插件
Jul 12 Javascript
jquery属性,遍历,HTML操作方法详解
Sep 17 Javascript
jQuery动态生成Bootstrap表格
Nov 01 Javascript
Html中 IFrame的用法及注意点
Dec 22 Javascript
如何在 Vue.js 中使用第三方js库
Apr 25 Javascript
微信小程序动态显示项目倒计时效果
Jun 13 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
May 12 Javascript
javascript实现前端分页效果
Jun 24 Javascript
常用原生JS兼容性写法汇总
Apr 27 #Javascript
JS组件Bootstrap实现弹出框效果代码
Apr 26 #Javascript
跨域资源共享 CORS 详解
Apr 26 #Javascript
Bootstrap滚动监听(Scrollspy)插件详解
Apr 26 #Javascript
JS组件Bootstrap实现下拉菜单效果代码
Apr 26 #Javascript
基于Jquery插件实现跨域异步上传文件功能
Apr 26 #Javascript
Bootstrap每天必学之模态框(Modal)插件
Apr 26 #Javascript
You might like
一个简易需要注册的留言版程序
2006/10/09 PHP
PHP 抓取新浪读书频道的小说并生成txt电子书的代码
2009/12/18 PHP
将时间以距今多久的形式表示,PHP,js双版本
2012/09/25 PHP
php使用Cookie实现和用户会话的方法
2015/01/21 PHP
PHP框架实现WebSocket在线聊天通讯系统
2019/11/21 PHP
jquery $.ajax入门应用一
2008/11/19 Javascript
JS 控制CSS样式表
2009/08/20 Javascript
目前流行的JavaScript库的介绍及对比
2013/09/29 Javascript
JS应用正则表达式转换大小写示例
2014/09/18 Javascript
完美兼容多浏览器的js判断图片路径代码汇总
2015/04/17 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
Angular2使用Augury来调试Angular2程序
2017/05/21 Javascript
浅谈angular4实际项目搭建总结
2017/12/01 Javascript
Python实现一个简单的MySQL类
2015/01/07 Python
Django如何自定义分页
2018/09/25 Python
selenium+python自动化测试之使用webdriver操作浏览器的方法
2019/01/23 Python
使用Python的OpenCV模块识别滑动验证码的缺口(推荐)
2019/05/10 Python
Python with标签使用方法解析
2020/01/17 Python
解决Python logging模块无法正常输出日志的问题
2020/02/21 Python
Python脚本实现监听服务器的思路代码详解
2020/05/28 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
2020/09/26 Python
浅谈matplotlib默认字体设置探索
2021/02/03 Python
巴西葡萄酒销售网站:Wine.com.br
2017/11/07 全球购物
Omio英国:搜索并比较便宜的巴士、火车和飞机
2019/08/27 全球购物
资源环境与城市管理专业推荐信
2013/11/30 职场文书
小学生检讨书大全
2014/02/06 职场文书
综合实践活动方案
2014/02/14 职场文书
《美丽的公鸡》教学反思
2014/02/25 职场文书
培训专员岗位职责
2014/02/26 职场文书
常务副县长“三严三实”对照检查材料思想汇报
2014/10/05 职场文书
课外活动实习计划
2015/01/19 职场文书
体育教师个人总结
2015/02/09 职场文书
教师辞职信范文
2015/02/28 职场文书
2015年实习班主任工作总结
2015/04/23 职场文书
教学质量月活动总结
2015/05/11 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书