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 相关文章推荐
基于jQuery实现下拉收缩(展开与折叠)特效
Dec 25 Javascript
JavaScript获取/更改文本框的值的实例代码
Aug 02 Javascript
javascript引用赋值(地址传值)用法实例
Jan 13 Javascript
纯js代码实现未知宽高的元素在指定元素中垂直水平居中显示
Sep 12 Javascript
Bootstrap布局组件教程之Bootstrap下拉菜单
Jun 12 Javascript
javascript简单实现跟随滚动条漂浮的返回顶部按钮效果
Aug 19 Javascript
js获取当前时间(昨天、今天、明天)
Nov 23 Javascript
Vue学习笔记进阶篇之vue-router安装及使用方法
Jul 19 Javascript
使用JavaScript开发跨平台的桌面应用详解
Jul 27 Javascript
详解使用路由延迟加载 Angular 模块
Oct 12 Javascript
关于在LayUI中使用AJAX提交巨坑记录
Oct 25 Javascript
JavaScript闭包原理与用法学习笔记
May 29 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
php性能优化分析工具XDebug 大型网站调试工具
2011/05/22 PHP
php设计模式之命令模式的应用详解
2013/05/21 PHP
PHP利用REFERER根居访问来地址进行页面跳转
2013/09/28 PHP
php获取从百度搜索进入网站的关键词的详细代码
2014/01/08 PHP
destoon会员注册提示“数据校验失败(2)”解决方法
2014/06/21 PHP
php实现微信支付之现金红包
2018/05/30 PHP
CCPry JS类库 代码
2009/10/30 Javascript
javascript的内存管理详解
2013/08/07 Javascript
JavaScript通过元素索引号删除数组中对应元素的方法
2015/03/18 Javascript
浅谈window对象的scrollBy()方法
2015/07/15 Javascript
jquery实现浮动在网页右下角的彩票开奖公告窗口代码
2015/09/04 Javascript
简单实现jQuery上传图片显示预览功能
2020/06/29 jQuery
vue-cli3 项目从搭建优化到docker部署的方法
2019/01/28 Javascript
JavaScript函数式编程(Functional Programming)声明式与命令式实例分析
2019/05/21 Javascript
JavaScript观察者模式原理与用法实例详解
2020/03/10 Javascript
详解JavaScript中new操作符的解析和实现
2020/09/04 Javascript
基于JS实现操作成功之后自动跳转页面
2020/09/25 Javascript
[51:17]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第二场 10月30日
2020/10/31 DOTA
举例讲解Python中is和id的用法
2015/04/03 Python
Python多层装饰器用法实例分析
2018/02/09 Python
Django框架组成结构、基本概念与文件功能分析
2019/07/30 Python
python字符串的拼接方法总结
2019/11/18 Python
Python 实现加密过的PDF文件转WORD格式
2020/02/04 Python
python 5个实用的技巧
2020/09/27 Python
英国儿童设计师服装的领先零售商:Base
2019/03/17 全球购物
亿阳信通股份有限公司笔试题(C#)
2016/03/04 面试题
物理系毕业生自荐信
2013/11/01 职场文书
前处理组长岗位职责
2014/03/01 职场文书
安全教育实施方案
2014/03/02 职场文书
2014爱耳日宣传教育活动总结
2014/03/09 职场文书
中学生逃课检讨书
2015/02/17 职场文书
党员廉政准则心得体会
2016/01/20 职场文书
2016年精神文明建设先进个人事迹材料
2016/02/29 职场文书
MySQL EXPLAIN输出列的详细解释
2021/05/12 MySQL
用Python爬取某乎手机APP数据
2021/06/15 Python
vue动态绑定style样式
2022/04/20 Vue.js