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> 展开
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> 展开
展开全部
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说的对,是指向调用该函数的对象。谁调用这个函数,就指向谁。如果没有被调用,那这语句根本就不会被执行,指向谁都没有意义。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询