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滚动字幕效果实现代码
Jun 22 Javascript
js通过元素class名字获取元素集合的具体实现
Jan 06 Javascript
js中window.open打开一个新的页面
Aug 10 Javascript
学习JavaScript设计模式之责任链模式
Jan 18 Javascript
获取阴历(农历)和当前日期的js代码
Feb 15 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
Jan 19 Javascript
动态统计当前输入内容的字节、字符数的实例详解
Oct 27 Javascript
基于vue2.0的活动倒计时组件countdown(附源码下载)
Oct 09 Javascript
webpack-url-loader 解决项目中图片打包路径问题
Feb 15 Javascript
vue使用keep-alive保持滚动条位置的实现方法
Apr 09 Javascript
VUE 组件转换为微信小程序组件的方法
Nov 06 Javascript
浅析Vue 中的 render 函数
Feb 28 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
dede3.1分页文字采集过滤规则详说(图文教程)续四
2007/04/03 PHP
php搜索文件程序分享
2015/10/30 PHP
PHP会话操作之cookie用法分析
2016/09/28 PHP
jQuery 图片切换插件(代码比较少)
2012/05/07 Javascript
onbeforeunload与onunload事件异同点总结
2013/06/24 Javascript
高效率JavaScript编写技巧整理
2013/08/23 Javascript
JavaScript之IE的fireEvent方法详细解析
2013/11/20 Javascript
Javascript学习笔记之函数篇(五) : 构造函数
2014/11/23 Javascript
jQuery圆形统计图开发实例
2015/01/04 Javascript
原生JavaScript实现瀑布流布局
2020/06/28 Javascript
JS组件系列之Bootstrap Icon图标选择组件
2016/01/28 Javascript
Angular的事件和表单详解
2016/12/26 Javascript
js实现多行文本框统计剩余字数功能
2017/03/28 Javascript
jQuery.Form实现Ajax上传文件同时设置headers的方法
2017/06/26 jQuery
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
Bootstrap导航菜单点击后无法自动添加active的处理方法
2018/08/10 Javascript
javaScript实现游戏倒计时功能
2018/11/17 Javascript
Node.js API详解之 zlib模块用法分析
2020/05/19 Javascript
python zip文件 压缩
2008/12/24 Python
使用python实现strcmp函数功能示例
2014/03/25 Python
python3实现ftp服务功能(服务端 For Linux)
2017/03/24 Python
Python递归实现汉诺塔算法示例
2018/03/19 Python
python在每个字符后添加空格的实例
2018/05/07 Python
详解python读取image
2019/04/03 Python
详解numpy的argmax的具体使用
2019/05/27 Python
Python的垃圾回收机制详解
2019/08/28 Python
Python 元组拆包示例(Tuple Unpacking)
2019/12/24 Python
python从内存地址上加载python对象过程详解
2020/01/08 Python
Html5实现iPhone开机界面示例代码
2013/06/30 HTML / CSS
台湾饭店和机票预订网站:Expedia台湾
2016/08/05 全球购物
某公司部分笔试题
2013/11/05 面试题
感恩小明星事迹材料
2014/05/23 职场文书
我的中国梦演讲稿小学篇
2014/08/19 职场文书
财务总监岗位职责
2015/02/03 职场文书
springboot项目以jar包运行的操作方法
2021/06/30 Java/Android
 分享一个Python 遇到数据库超好用的模块
2022/04/06 Python