在js中call和apply它们的作用都是将函数绑定到另外一个对象上去运行,两者仅在定义参数方式有所区别,下面我来给大家介绍一下call和apply用法。

在web前端开发过程中,我们经常需要改变this指向,通常我们想到的就是用call方法,但是对于call的理解很多人不是很清晰,那么下面小编就给大家详细说一说call和apply的详细知识

一、call方法的定义

大家在百度里面可以搜索call,关于call的定义都很拗口。在我的理解,a.call(b,arg1,arg2..)就是a对象的方法应用到b对象上。例如如下例子:

 代码如下 复制代码

function add(a,b)
{
alert(a+b);
}
function reduce(a,b)
{
alert(a-b);
}
add.call(reduce,1,3) //将add方法运用到reduce,结果为4

二、call可以改变this指向

如下例:

 代码如下 复制代码

function b()
{
alert(this)
}
b(); //window
b.call(); //window
b.call(“a”,2,3); //a

再看一个复杂的例子:

 代码如下 复制代码

function Animal()
{
this.name=”animal”;
this.showName=function()
{
alert(this.name)
}
}
function Cat()
{
this.name=”cat”;
}
var animal = new Animal();
var cat = new Cat();
animal.showName(); //结果为animal
animal.showName.call(cat); //原本cat没有showName方法,但是通过call方法将animal的showName方法应用到cat上,因此结果为cat

三、实现继承

如下例子:

 代码如下 复制代码

function Animal(name)
{
this.name=name;
this.showName=function()
{
alert(this.name)
}
}
function Cat(name)
{
Animal.call(this,name); //将Animal应用到Cat上,因此Cat拥有了Animal的所有属性和方法
}
var cat = new Cat(“Black Cat”);
cat.showName(); //浏览器弹出Black Cat

四、apply用法

apply和call的用法只有一个地方不一样,除此之外,其他地方基本一模一样

a.call(b,arg1,arg2…)

apply(b,[arg1,arg2]) //apply只有2个参数,它将call的参数(arg1,arg2…)放在一个数组中作为apply的第二参数

最新文章

  1. [机器学习] 深度学习之caffe1——软件配置与测试
  2. 在QtCreator 2.1.0 下使用opencv231库加载图片并显示
  3. 深入解析Windows操作系统笔记——CH1概念和术语
  4. DB2 Add hidden Identity columns
  5. Spring动态配置多数据源
  6. ylbtech-dbs:ylbtech-7,welfareSystem(福利发放系统)
  7. TortoiseSVN本地代码版本控制设置步骤。
  8. Weka 自动优化参数
  9. 虚拟机linux配置nginx 为什么win7通过Ip访问不到
  10. Microsoft.AlphaImageLoader过滤评论
  11. IIS 批处理 bat
  12. 安装elasticsearch-7.0.0(centos)
  13. jQuery-4.动画篇---jQuery核心
  14. 五分钟了解node,cnpm和yarn
  15. Android studio中导入SlidingMenu问题
  16. 7.5 GRASP原则五:高内聚 High Cohesion
  17. mysql常见操作语句,建表,增删改查
  18. SpringBoot使用@Value从yml文件取值为空--注入静态变量
  19. DNS的过程
  20. RBAC用户权限管理数据库设计【转载】

热门文章

  1. Asp.Net Core 入门(九)—— 环境变量 TagHelper
  2. LeetCode || 大杂烩w
  3. jquery的同步和异步
  4. Bootstrap历练实例:基本按钮群组
  5. KVM 重命名虚机
  6. UIScrollView和MultiThreading、UITextField、Keyboard
  7. MFC学习小结
  8. (42)zabbix使用IT services 了解服务器SLA整体情况
  9. mysql:10道mysql查询语句面试题
  10. nginx常用功能配置