使用apply函数或call函数的意义:

  在面对对象编程过程中,当A对象调用其他对象而非A对象方法是,该方法中所有的this引用都指向此方法所在的对象,而不是当前代码的上下文即A对象,

为了保持this的原来的指向(即A对象),则需要使用apply或call函数。

apply()和call()的区别:

apply和call,它们的作用都是将函数绑定到另外一个对象上去运行

原型分别是

Function.prototype.apply(thisArg,argArray);
Function.prototype.call(thisArg,[arg1],[arg2…]]);

从中可以看出,第一个参数都被取名为thisArg,即所有函数内部的this指针都会被赋值为thisArg,使得另外一个对象实例传入函数。

如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

而区别就在于第二个参数,apply()函数使用数组形式传入数值,call()函数以自由形式直接传入多个数值。

示例:

function Accomodation(){

  this.isAlarmed=false;

}

var AlarmSystem={

  arm:function(message){

  this.isAlarmed=true;

alert(message);

  },
disarm:function(message){
this.isAlarmed=false;
alert(message);
}

};

var myHouse = new Accomodation();

AlarmSystem.arm.call(myHouse,"Alarm activated");

alert(myHouse.isAlarmed);      //true      arm()函数中的this值通过call()指向myHouse对象,使myHouse对象的属性发生改变

AlarmSystem.disarm.apply(myHouse,["Alarm activated"]);

alert(myHouse.isAlarmed);     //flase       arm()函数中的this值通过call()指向myHouse对象,使myHouse对象的属性发生改变

转载于:https://www.cnblogs.com/Bideam/p/5582526.html

call()函数、apply()函数区别与意义相关推荐

  1. pandas使用apply函数:在dataframe数据列(column)上施加(apply)函数

    pandas使用apply函数:在dataframe数据列(column)上施加(apply)函数 目录 pandas使用apply函数:在dataframe数据列上施加函数 #apply函数的基本语 ...

  2. pandas的apply函数解析

    apply函数 apply函数是pandas里面所有函数中自由度最高的函数.该函数如下: DataFrame.apply(func, axis=0, broadcast=False, raw=Fals ...

  3. pandas使用教程:apply函数、聚合函数agg和transform

    文章目录 apply函数调用 apply函数描述性统计 apply函数lambda自定义 聚合函数aggregate/agg 用字典实现聚合 transform函数 多函数 Transform 重置索 ...

  4. R语言中的apply函数用法

    刚开始接触R语言时,会听到各种的R语言使用技巧,其中最重要的一条就是不要用循环,效率特别低,要用向量计算代替循环计算. 那么,这是为什么呢?原因在于R的循环操作for和while,都是基于R语言本身来 ...

  5. 关于call和apply函数的区别及用法

    call和apply函数是function函数的基本属性,都可以用于更改函数对象和传递参数,是前端工程师常用的函数.具体使用方法请参考以下案列: 例如: 申明函数: var fn = function ...

  6. 定义指令时“控制器”,“链接”和“编译”函数之间的区别

    本文翻译自:Difference between the 'controller', 'link' and 'compile' functions when defining a directive ...

  7. js中bind、call、apply函数的用法

    最近一直在用 js 写游戏服务器,我也接触 js 时间不长,大学的时候用 js 做过一个 H3C 的 web 的项目,然后在腾讯实习的时候用 js 写过一些奇怪的程序,自己也用 js 写过几个的网站. ...

  8. python 多进程 multiprocessing 进程池 pool apply_async()函数与apply()函数的用法

    apply函数主要用于传递不定参数,主进程会被阻塞到函数执行结束.也就是说只有apply里面的内容被执行完了,才会进行执行主函数的内容. 参考文章1:python进程池Pool的apply与apply ...

  9. 方法和函数有什么区别?

    有人可以在OOP上下文中提供方法与功能的简单说明吗? #1楼 对我来说:如果我同意:方法的功能和函数的功能是相同的: 一个函数可能返回一个值 可能期望参数 就像任何一段代码一样,您可能要放入对象,结果 ...

最新文章

  1. Nginx与PHP(FastCGI)的安装、配置、优化
  2. sklearn 相关性分析_人工智能和大数据的骨架支点—— 机器学习之相关性分析
  3. cucumber_java从入门到精通(5)使用maven创建cucumber_java项目
  4. ROS知识【11-1】:建立用户自己的工作空间、功能包
  5. 本地yum仓库和http方式的yum仓库。
  6. 深度学习(三)——Autoencoder, 词向量
  7. js传真实地址 C:\fakepath
  8. css3 transform实现水平和垂直居中
  9. NLOPT ros下的使用
  10. 淘宝双12趣味大数据:150万件打底裤被男人买走了;套套销量暴涨50%...
  11. Oracle创建表空间,新增用户分配表空间,赋予用户权限
  12. How to Run Mac OS X in VirtualBox on Windows
  13. 双11,立减¥3554!戴尔官网撩客服砍价带走高性能电脑,速来!
  14. openstack详解(二十四)——Neutron服务注册
  15. HTML5 Now: 深入了解HPolyfills
  16. jQuery学习笔记之closest()
  17. 手机内置摄像头接线图解_坚果R2 手机官方壁纸
  18. 怎么压缩动态图片?手机怎么压缩gif动图?
  19. igraph study
  20. 建立牢固的多功能Smartphone应用程序

热门文章

  1. AT5 two-dimensional objects - the torus and genus
  2. 注册表的文件关联及应用
  3. NCFM识别-Googlenet
  4. android 取出list第一页数据_Android传递ListObject的用法
  5. layui table勾选框的修改_layui表格(Table)下添加可更新拉选择框select
  6. 服装关键点检测算法(CNN/STN)含(4点、6点以及8点)
  7. 文档布局分析 扭曲文档图像恢复
  8. 重要开源!CNN-RNN-CTC 实现手写汉字识别
  9. Fixchart图表组件——仪表盘,纳尼?
  10. Android LayoutInflater概述