js继承call()和apply()⽅法总结
1、⽅法定义
call⽅法:
语法:call([thisObj[,arg1[,arg2[,[,.argN]]]]])
定义:调⽤⼀个对象的⼀个⽅法,以另⼀个对象替换当前对象。
说明:
call⽅法可以⽤来代替另⼀个对象调⽤⼀个⽅法。call⽅法可将⼀个函数的对象上下⽂从初始的上下⽂改变为由thisObj指定
的新对象。
如果没有提供thisObj参数,那么Global对象被⽤作thisObj。
apply⽅法:
语法:apply([thisObj[,argArray]])
定义:应⽤某⼀对象的⼀个⽅法,⽤另⼀个对象替换当前对象。
说明:
如果argArray不是⼀个有效的数组或者不是arguments对象,那么将导致⼀个TypeError。
如果没有提供argArray和thisObj任何⼀个参数,那么Global对象将被⽤作thisObj,并且⽆法被传递任何参数。
2、常⽤实例
a、
复制代码代码如下:
functionadd(a,b)
{
alert(a+b);
}
functionsub(a,b)
{
alert(a-b);
}
(sub,3,1);
这个例⼦中的意思就是⽤add来替换sub,(sub,3,1)==add(3,1),所以运⾏结果为:alert(4);//注意:js中的函数其
实是对象,函数名是对Function对象的引⽤。
b、
复制代码代码如下:
functionAnimal(){
="Animal";
me=function(){
alert();
}
}
functionCat(){
="Cat";
}
varanimal=newAnimal();
varcat=newCat();
//通过call或apply⽅法,将原本属于Animal对象的showName()⽅法交给对象cat来使⽤了。
//输⼊结果为"Cat"
(cat,",");
//(cat,[]);
call的意思是把animal的⽅法放到cat上执⾏,原来cat是没有showName()⽅法,现在是把animal的showName()⽅法放到
cat上来执⾏,所以应该是Cat
c、实现继承
复制代码代码如下:
functionAnimal(name){
=name;
me=function(){
alert();
}
}
functionCat(name){
(this,name);
}
varcat=newCat("BlackCat");
me();
(this)的意思就是使⽤Animal对象代替this对象,那么Cat中不就有Animal的所有属性和⽅法了吗,Cat对象就能
够直接调⽤Animal的⽅法以及属性了.
d、多重继承
复制代码代码如下:
functionClass10()
{
b=function(a,b)
{
alert(a-b);
}
}
functionClass11()
{
d=function(a,b)
{
alert(a+b);
}
}
functionClass2()
{
(this);
(this);
}
很简单,使⽤两个call就实现多重继承了
当然,js的继承还有其他⽅法,例如使⽤原型链,这个不属于本⽂的范畴,只是在此说明call的⽤法。说了call,当然还有
apply,这两个⽅法基本上是⼀个意思,区别在于call的第⼆个参数可以是任意类型,⽽apply的第⼆个参数必须是数组,也可
以是arguments
还有callee,caller..
本文发布于:2022-11-25 07:01:07,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/16971.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |