永发信息网

Javascript中call和apply的区别与详解

答案:2  悬赏:10  手机版
解决时间 2021-02-10 04:18
Javascript中call和apply的区别与详解
最佳答案
call和apply的详解call()方法
用于操作this的函数方法是call(),它可以指定的this值和参数来执行函数。call()的第一个参数指定了函数执行时this的值,其后的所有参数都是需要被传入函数的参数。
apply()方法
apply()是你可以用来操作this的第二个函数方法。apply()的工作方式和call()完全一样,但它只能接受两个参数: this 的值和一个数组或者类似数组的对象,内含需要被传入函数的参数(也就是说你可以把arguments对象作为apply()的第二个参数)。你不需要像使用call()那样一个个指定参数,而是可以轻松传递整个数组给apply()。除此之外,call()和apply()表现得完全一样。
bind()方法
改变this的第三个函数方法是bind()。ECMAScript 5中新加的这个方法和之前那两个颇有不同。按惯例,bind()的第一个参数是要传给新函数的this的值。其他所有参数代表需要被永久设置在新函数中的命名参数。你可以在之后继续设置任何非永久参数。
call和apply的区别
代码案例:
资料来源:
HTML5学堂
决胜前端
全部回答
一、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的第二参数
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
永州农村商业银行(三多亭分理处)地址有知道的
临安锦城镇有袜子缝头加工厂吗
死人安葬时官材大头朝哪方
普定的纹身店洗纹身多少钱
苹果男装地址有知道的么?有点事想过去
永州市冷水滩区农村信用合作联社(觅湘路)地址
谁是我的郎,谁那么善良。原唱是谁。叫什么歌
堪见坡在哪里啊,我有事要去这个地方
永州市冷水滩区农村信用合作联社(普利桥农村
乾西乡湖头村第二卫生室地址在哪,我要去那里
怎样才能让媳妇到达性高潮
桑塔纳3000减震弹簧软的好还是硬的好
中国邮政储蓄银行(永州市帝王广场营业所)怎么
格林豪泰密云长城环岛快捷酒店地址有知道的么
为什么男人在追女孩子时的表现和追到之后的表
推荐资讯
永州农村商业银行(零陵北路)地址在什么地方,
4×3=12读作:______;改写成加法算式:_____
众彩水族合川店地址好找么,我有些事要过去
家和超市新城店地址有知道的么?有点事想过去
咖啡陪你caffebene(中启广场店)地址有知道的
齐齐哈尔市公安局交警支队建华大队地址有知道
一个鬼片里有个主人公叫十三少
美金兰时尚酒店停车场地址在哪,我要去那里办
广南县阿科中学地址在什么地方,我要处理点事
G3手机销售中心地址在哪,我要去那里办事
男人被男人赞美会开心吗我是男的,我有个男同
(10分)北京时间2011年3月11日13点46分左右
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?