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+CSS 制作的超级简单的下拉菜单附图
Nov 22 Javascript
浅谈JavaScript中指针和地址
Jul 26 Javascript
基于javascript实现九宫格大转盘效果
May 28 Javascript
利用angular.copy取消变量的双向绑定与解析
Nov 25 Javascript
微信小程序 石头剪刀布实例代码
Jan 04 Javascript
JavaScript实现前端分页控件
Apr 19 Javascript
bootstrap栅格系统示例代码分享
May 22 Javascript
webpack 4.0.0-beta.0版本新特性介绍
Feb 10 Javascript
Puppeteer环境搭建的详细步骤
Sep 21 Javascript
vue-awesome-swiper 基于vue实现h5滑动翻页效果【推荐】
Nov 08 Javascript
es6函数之尾递归用法实例分析
Apr 25 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
Oct 22 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 远程关机实现代码
2009/11/10 PHP
PHP安全防范技巧分享
2011/11/03 PHP
PHP生成json和xml类型接口数据格式
2015/05/17 PHP
PHP获取IP地址所在地信息的实例(使用纯真IP数据库qqwry.dat)
2016/11/15 PHP
PDO::inTransaction讲解
2019/01/28 PHP
2007/12/23更新创意无限,简单实用(javascript log)
2007/12/24 Javascript
asp.net+jquery滚动滚动条加载数据的下拉控件
2010/06/25 Javascript
读jQuery之六 缓存数据功能介绍
2011/06/21 Javascript
window.open关于浏览器拦截问题分析及解决方法
2013/02/05 Javascript
JS实现模仿微博发布效果实例代码
2013/12/16 Javascript
jQuery学习笔记之jQuery+CSS3的浏览器兼容性
2015/01/19 Javascript
JavaScript基本数据类型及值类型和引用类型
2015/08/25 Javascript
JavaScript中关于iframe滚动条的去除和保留
2016/11/17 Javascript
javascript 操作cookies详解及实例
2017/02/22 Javascript
JavaScript实现的商品抢购倒计时功能示例
2017/04/17 Javascript
Bootstrap模态框插件使用详解
2017/05/11 Javascript
Vue.js上下滚动加载组件的实例代码
2017/07/17 Javascript
Bootstrap 模态框多次显示后台提交多次BUG的解决方法
2017/12/26 Javascript
对angularJs中ng-style动态改变样式的实例讲解
2018/09/30 Javascript
VuePress 快速踩坑小结
2019/02/14 Javascript
利用Node.js如何实现文件循环覆写
2019/04/05 Javascript
策略模式实现 Vue 动态表单验证的方法
2019/09/16 Javascript
ES6实现图片切换特效代码
2020/01/14 Javascript
Python实现统计给定字符串中重复模式最高子串功能示例
2018/05/16 Python
对pandas的行列名更改与数据选择详解
2018/11/12 Python
Python之Class&Object用法详解
2019/12/25 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
2020/04/08 Python
Python rabbitMQ如何实现生产消费者模式
2020/08/24 Python
Ubuntu权限不足无法创建文件夹解决方案
2020/11/14 Python
详解CSS3阴影 box-shadow的使用和技巧总结
2016/12/03 HTML / CSS
HTML5 source标签:媒介元素定义媒介资源
2018/01/29 HTML / CSS
Foreo国际站:Foreo International
2018/10/29 全球购物
英国最大的在线亚洲杂货店:Red Rickshaw
2020/03/22 全球购物
售后服务经理岗位职责
2014/02/25 职场文书
销售辞职信范文
2015/03/02 职场文书
写自招自荐信的绝招!
2019/04/19 职场文书