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实现控制台控件的代码
Sep 04 Javascript
JQuery读取XML文件数据并显示的实现代码
Dec 16 Javascript
对于jQuery性能的一些优化建议
Aug 13 Javascript
详解javascript数组去重问题
Nov 06 Javascript
js实现滚动条滚动到页面底部继续加载
Dec 19 Javascript
jquery插件之文字间歇自动向上滚动效果代码
Feb 25 Javascript
jQuery animate easing使用方法图文详解
Jun 17 Javascript
EasyUI Combobox设置默认值 获取text的方法
Nov 28 Javascript
详解jQuery停止动画——stop()方法的使用
Dec 14 Javascript
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
Dec 09 Javascript
深入浅出vue图片路径的实现
Sep 04 Javascript
Vue 打包后相对路径的引用问题
Jun 05 Vue.js
常用原生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
smtp邮件发送一例
2006/10/09 PHP
php中替换字符串函数strtr()和str_repalce()的用法与区别
2016/11/25 PHP
php生成0~1随机小数的方法(必看)
2017/04/05 PHP
PHPExcel中文帮助手册|PHPExcel使用方法(分享)
2017/06/09 PHP
php中请求url的五种方法总结
2017/07/13 PHP
php设计模式之观察者模式定义与用法经典示例
2019/09/19 PHP
如何获取JQUERY AJAX返回的JSON结果集实现代码
2012/12/10 Javascript
JS实现时间格式化的方式汇总
2013/10/16 Javascript
js 删除数组的几种方法小结
2014/02/21 Javascript
jquery调取json数据实现省市级联的方法
2015/01/29 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
jquery层级选择器(匹配父元素下的子元素实现代码)
2016/09/05 Javascript
jquery操作ID带有变量的节点实例
2016/12/07 Javascript
基于Javascript倒计时效果
2016/12/22 Javascript
JavaScript运动框架 多物体任意值运动(三)
2017/05/17 Javascript
详解基于DllPlugin和DllReferencePlugin的webpack构建优化
2018/06/28 Javascript
webpack的CSS加载器的使用
2018/09/11 Javascript
NodeJS搭建HTTP服务器的实现步骤
2018/10/12 NodeJs
[08:53]DOTA2每周TOP10 精彩击杀集锦vol.9
2014/06/26 DOTA
合并Excel工作薄中成绩表的VBA代码,非常适合教育一线的朋友
2009/04/09 Python
Python数据结构之Array用法实例
2014/10/09 Python
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
Python操作MySQL数据库的三种方法总结
2018/01/30 Python
pytorch + visdom CNN处理自建图片数据集的方法
2018/06/04 Python
Python 实现敏感目录扫描的示例代码
2020/05/21 Python
HTML5使用Audio标签实现歌词同步的效果
2016/03/17 HTML / CSS
html5中svg canvas和图片之间相互转化思路代码
2014/01/24 HTML / CSS
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
AHAVA美国官方网站:死海海泥护肤品牌
2016/10/18 全球购物
C# .NET面试题
2015/11/28 面试题
如何掌握自荐信格式呢
2013/11/19 职场文书
《沉香救母》教学反思
2014/04/19 职场文书
党员教师群众路线思想汇报范文
2014/10/28 职场文书
《暗黑破坏神2:重制版》本周进行第一轮A测 目前可官网进行申请报名
2021/04/07 其他游戏
SpringBoot整合Mybatis Generator自动生成代码
2021/08/23 Java/Android
windows server2008 开启端口的实现方法
2022/06/25 Servers