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 相关文章推荐
html数组字符串拼接的最快方法
Sep 16 Javascript
超酷的网页音乐播放器DewPlayer使用方法
Dec 18 Javascript
jQuery EasyUI API 中文文档 可调整尺寸
Sep 29 Javascript
jquery特效 幻灯片效果示例代码
Jul 16 Javascript
javascript实现博客园页面右下角返回顶部按钮
Feb 22 Javascript
实例解析jQuery插件EasyUI最常用的表单验证规则
Nov 29 Javascript
Bootstrap菜单按钮及导航实例解析
Sep 09 Javascript
CodeMirror js代码加亮使用总结
Mar 25 Javascript
yarn的使用与升级Node.js的方法详解
Jun 04 Javascript
Vue2.0实现将页面中表格数据导出excel的实例
Aug 09 Javascript
vue-cli 项目打包完成后运行文件路径报错问题
Jul 19 Javascript
通过实例解析js可枚举属性与不可枚举属性
Dec 02 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+javascript实现二级级联菜单的制作
2008/05/06 PHP
PHP strip_tags()去除HTML、XML以及PHP的标签介绍
2014/02/18 PHP
php自定义apk安装包实例
2014/10/20 PHP
PHP7.0版本备注
2015/07/23 PHP
网络之美 JavaScript中Get和Set访问器的实现代码
2010/09/19 Javascript
DOM 中的事件处理介绍
2012/01/18 Javascript
javascript操作excel生成报表全攻略
2014/05/04 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
微信小程序 地图map实例详解
2017/06/07 Javascript
利用Node.js检测端口是否被占用的方法
2017/12/07 Javascript
基于Vue开发数字输入框组件
2017/12/19 Javascript
Vuejs 2.0 子组件访问/调用父组件的方法(示例代码)
2018/02/08 Javascript
Node Puppeteer图像识别实现百度指数爬虫的示例
2018/02/22 Javascript
在vue项目中引入vue-beauty操作方法
2019/02/11 Javascript
Node.js Stream ondata触发时机与顺序的探索
2019/03/08 Javascript
微信小程序登录session的使用
2019/03/17 Javascript
vue2 v-model/v-text 中使用过滤器的方法示例
2019/05/09 Javascript
实现一个 Vue 吸顶锚点组件方法
2019/07/10 Javascript
小程序实现点击tab切换左右滑动
2020/11/16 Javascript
Python Mysql自动备份脚本
2008/07/14 Python
python中关于日期时间处理的问答集锦
2013/03/08 Python
从零学Python之hello world
2014/05/21 Python
python Matplotlib画图之调整字体大小的示例
2017/11/20 Python
对python中的try、except、finally 执行顺序详解
2019/02/18 Python
Python爬虫 批量爬取下载抖音视频代码实例
2019/08/16 Python
python 动态调用函数实例解析
2019/10/21 Python
python GUI计算器的实现
2020/10/09 Python
selenium3.0+python之环境搭建的方法步骤
2021/02/01 Python
实现CSS3中的border-radius(边框圆角)示例代码
2013/07/19 HTML / CSS
Jo Malone美国官网:祖玛珑香水
2017/03/27 全球购物
优秀演讲稿范文
2013/12/29 职场文书
实习老师离校感言
2014/02/03 职场文书
担保书格式及范文
2014/04/01 职场文书
讲座通知范文
2015/04/23 职场文书
考勤制度通知
2015/04/25 职场文书
初中思想品德教学反思
2016/02/24 职场文书