javascript中函数方法call()中参数this的问题

<scripttype="text/javascript">functionClassA(sColor){this.color=sColor;this.sayColor=... <script type="text/javascript">
function ClassA(sColor)
{
this.color = sColor;
this.sayColor = function () //根据后面的代码,由于调用此方法的是ObjB,也就是ClassB,所以this指向的是ClassB。不知我这样认为是否对?
{
alert(this.color);
};
}
function ClassB(sColor)
{
ClassA.call(sColor);//这边括号内没有加this,所以代码跑步起来。我想要知道,加了this之后,这个this指向谁?我的理解是:因为没有对象的方法调用ClassB,所以这边的this不指向任何对象。不知对否? 还有,若是这边在不加参数的前提下就已经完成对ClassA的继承的话,那不是就不需要this了吗?难道this是完成继承的关键?
}
ObjB=new ClassB("red");
ObjB.sayColor();
</script>
展开
 我来答
zpgsb
推荐于2017-11-27 · TA获得超过453个赞
知道小有建树答主
回答量:552
采纳率:72%
帮助的人:282万
展开全部

this写在不同的地方代表不同的对象

在classB内写的this指的就是classB

javascript不是一个真正面向对象的语言,所谓的继承不过是和面向对象的语言实现继承差不多的效果而已

你先了解call()的用法:

call方法: 
语法:call([thisObj[,arg1[, arg2[,   [,.argN]]]]]) 
定义:调用一个对象的一个方法,以另一个对象替换当前对象。 
说明: 
call 方法可以用来代替另一个对象调用一个方法。call 方法可将一个函数的对象上下文从初始的上下文改变为由 thisObj 指定的新对象。 

对你这里来说

 function ClassB(sColor)
 {
     ClassA.call(this,sColor);
 }

意思就是说 用ClassB的this来代替ClassA的this来执行ClassA()这个函数,所以ClassB就有了ClassA的所有功能 感觉像是继承了ClassA

追答
我的表达有问题,w3c说的对,是指向调用该函数的对象。谁调用这个函数,就指向谁。如果没有被调用,那这语句根本就不会被执行,指向谁都没有意义。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式