问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

和call()方法的区别

发布网友 发布时间:2022-05-26 01:51

我来回答

1个回答

热心网友 时间:2022-05-26 03:20

apply和call方法定义及apply和call方法的区别

1、方法定义

call, 

apply都属于Function.prototype的一个方法,它是JavaScript引擎内在实现的,因为属于Function.prototype,所以每个Function对象实例,也就是每个方法都有call,

apply属性.既然作为方法的属性,那它们的使用就当然是针对方法的了.这两个方法是容易混淆的,因为它们的作用一样,只是使用方式不同.

call方法:

语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 

定义:调用一个对象的一个方法,以另一个对象替换当前对象。

说明:

call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 

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

apply方法:

语法:apply([thisObj[,argArray]]) 

定义:应用某一对象的一个方法,用另一个对象替换当前对象。 

说明:

如果 argArray 不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。 

如果没有提供 argArray 和 thisObj 任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数

call, apply作用就是借用别人的方法来调用,就像调用自己的一样.

它们的不同之处:

apply:最多只能有两个参数——新this对象和一个数组 

argArray。如果给该方法传递多个参数,则把参数都写进这个数组里面,当然,即使只有一个参数,也要写进数组里面。如果 argArray 

不是一个有效的数组或者不是 arguments 对象,那么将导致一个 TypeError。如果没有提供 argArray 和 thisObj 

任何一个参数,那么 Global 对象将被用作 thisObj, 并且无法被传递任何参数。

call:则是直接的参数列表,主要用在js对象各方法互相调用的时候,使当前this实例指针保持一致,或在特殊情况下需要改变this指针。如果没有提供 thisObj 参数,那么 Global 对象被用作 thisObj。

更简单地说,apply和call功能一样,只是传入的参数列表形式不同:如 func.call(func1,var1,var2,var3)对应的apply写法为:

func.apply(func1,[var1,var2,var3])

如:

add.apply(sub,[3,1]);
//add.call(sub,3,1);
var a={
n:1,
m:2,
add:function(){
return this.n+this.m;
}
}
var b={n:3,m:4
}
console.log(a.add.call(b));//b.n+b.m=7
function Animal(){
this.name = "Animal";
this.showName = function(){
alert(this.name);
}
}
function Cat(){
this.name = "Cat";
}
var animal = new Animal();
var cat = new Cat();
//通过call或apply方法,将原本属于Animal对象的showName()方法交给对象cat来使用了。
//输入结果为"Cat"
animal.showName.call(cat,",");
animal.showName.apply(cat,[]);

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
重磅|8月1日起 报关单的填法将重大改变 进出口权需要报关员么 宝宝被莫名的虫子咬了又红又肿又痒怎么? 北京疫情个为数是什么意思? 在做刀伤的手术时没有接上神经是医院的过错吗? 手术室收费项目有哪些 手术室的秘密:一台10万的手术,主刀医生拿多少?答案颠覆你的认知 阿里巴巴中修改产品信息只修改一小部分行吗?谢谢 可否给我一个阿里巴巴的序列号~谢谢了 阿里巴巴店铺产品搜索框代码谁有呢,给我发一下谢谢了! 自制哺乳文胸怎么做? 有什么形容无聊的诗句吗 夜深了,感觉无聊的诗句? 春晚几点开播? 梦见要结婚了可婚鞋哪也找不到 红外热成像仪的15-100mm数字什么意思 梦见妹妹的小女儿掉水里,没有捞上来, 手机软件数据备份 汇编call 指令 谁帮我找出苏轼的《留侯论1》的翻译啊? “由此观之,犹有刚强不能忍之气,非子房其谁全之?”这句话文言文的翻译是什么? 我想知道一些关于动物的知识,如公狮大还是母狮大?请大家帮忙告诉一声 iphone6弯了售后部能换机有什么办法 换壳 黄色皮鞋撒上饮料怎么办 又是一年辞旧岁,YARiS L 致享保驾伴我行 卧室房间墙壁上的黑色虫子 求天使与龙的轮舞OST 下载 天使与龙的轮舞五十背痛是哪一集 求这张图的高清图 谢谢 天使与龙的轮舞 提前做好的鸡蛋饼怎样才能保温呢 当我虚构的人物越来越真实时 ,我都怀疑自己的生活是不是被虚构了。这句话什么意思! 当虚构电影历来不准确时,为什么人们会不高兴呢? 有哪些虚构的东西反而比实际中更出名? 如何反驳阿虚的名言 「在虚构的故事当中寻求真实感的 “在虚构的故事中寻找真实感……”这句话是在什么情况下说的? 其中的真实感又是什么意思?是指动漫的设 从北京大学*本科毕业 好找工作吗 比起那些2本 3本有 有优势吗 为什么狗丢了不容易找到,人丢了就容易找到? 室温17度,空调制热15分钟后出风温度43度,请问这个效果算好吗? 室内气温17度,空调制热打开电辅热后运行15分钟出风口温度43度,,请问这效果可以吗? 山东威海是几线城市 医院的科室主任和科室*长哪个更有权利??主任能管得着*长和*吗???*帽上两个杠和三个杠的 中午吃点豆角,晚上大便里有黑色的,正常吗?谢谢 连续两个月了 ,每天吃菜,就是土豆,豆角,白菜,油麦菜,木耳之类的,拉的大便是纯黑色的,准确来说应 吃豆角还有香菇早上便便是黑色的 您好,我前段时间因为吃菜少便秘,从去年冬天开始肠胃就不太好,总是拉稀,我昨天早晨排便是发现大便是黑 植物有哪些分类? 植物分类表 植物得分类 胃炎可以吃火腿肠吗? 胃不好能吃火腿肠吗?