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代码
Jan 28 Javascript
jQuery Ajax 全解析
Feb 08 Javascript
JavaScript排序算法之希尔排序的2个实例
Apr 04 Javascript
javascript实现链接单选效果的方法
May 13 Javascript
JavaScript prototype属性详解
Oct 25 Javascript
JQuery实现动态操作表格
Jan 11 Javascript
AngularJS模糊查询功能实现代码(过滤内容下拉菜单排序过滤敏感字符验证判断后添加表格信息)
Oct 24 Javascript
浅谈Angular文字折叠展开组件的原理分析
Nov 24 Javascript
React 项目迁移 Webpack Babel7的实现
Sep 12 Javascript
vue3.0 CLI - 2.1 -  component 组件入门教程
Sep 14 Javascript
npm qs模块使用详解
Feb 07 Javascript
微信小程序向Java后台传输参数的方法实现
Dec 10 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版(2)
2006/10/09 PHP
PHP中cookies使用指南
2007/03/16 PHP
PHP strtr() 函数使用说明
2008/11/21 PHP
php jquery 实现新闻标签分类与无刷新分页
2009/12/18 PHP
centos 5.6 升级php到5.3的方法
2011/05/14 PHP
在html文件中也可以执行php语句的方法
2015/04/09 PHP
jquery关于页面焦点的定位(文本框获取焦点时改变样式 )
2010/09/10 Javascript
基于dom编程中 动态创建与删除元素的使用
2013/04/17 Javascript
javascript:FF/Chrome与IE动态加载元素的区别说明
2014/01/26 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
2016/01/05 Javascript
js ajaxfileupload.js上传报错的解决方法
2016/05/05 Javascript
jQuery获取当前点击的对象元素(实现代码)
2016/05/19 Javascript
D3.js实现柱状图的方法详解
2016/09/21 Javascript
JS 60秒后重新发送验证码的实例讲解
2017/07/26 Javascript
分析javascript中9 个常见错误阻碍你进步
2017/09/18 Javascript
ES6 系列之 Generator 的自动执行的方法示例
2018/10/19 Javascript
JavaScript如何使用插值实现图像渐变
2020/06/28 Javascript
Python实现的检测网站挂马程序
2014/11/30 Python
Python实例一个类背后发生了什么
2016/02/09 Python
Python彩色化Linux的命令行终端界面的代码实例分享
2016/07/02 Python
利用Python+Java调用Shell脚本时的死锁陷阱详解
2018/01/24 Python
Python Socket编程之多线程聊天室
2018/07/28 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
python绘制漏斗图步骤详解
2019/03/04 Python
python 实现简单的FTP程序
2019/12/27 Python
Python实现企业微信机器人每天定时发消息实例
2020/02/25 Python
opencv+python实现鼠标点击图像,输出该点的RGB和HSV值
2020/06/02 Python
Python爬虫headers处理及网络超时问题解决方案
2020/06/19 Python
使用placeholder属性设置input文本框的提示信息
2020/02/19 HTML / CSS
Gap工厂店:Gap Factory
2017/11/02 全球购物
公司人事专员岗位职责
2014/08/11 职场文书
2014年妇幼卫生工作总结
2014/12/09 职场文书
党支部评议意见
2015/06/02 职场文书
幼儿园保育员随笔
2015/08/14 职场文书
解决Goland 同一个package中函数互相调用的问题
2021/05/06 Golang