<script type="text/javascript">
function ClassA(sColor)
{
this.color=sColor;
this.sayColor=function(){
alert(this.color);
}
}
function ClassB(sColor,sName){
this.newMethod=ClassA;
this.newMethod(sColor);
delete this.newMethod;
this.name=sName;
this.sayName=function(){
alert(this.name);
}
}
var objA=new ClassA("red");
var objB=new ClassB("blue","Nicholas");
objA.sayColor();
objB.sayColor();
objB.sayName();
</script>
上面的 this.newMethod(sColor); 为什么不能写成this.newMethod=sColor呢
function ClassB(sColor,sName){
this.newMethod=ClassA;
//////////////////////
上面定义了newMethod就是ClassA函数,说是对象也是函数。而ClassA是需要参数的function ClassA(sColor)
sColor是个参数啥类型的你知道吗?不一定是函数类型的,如果也是跟ClassA一样的 你这样写应该也没有错,不过就不是ClassA了
this.newMethod =ClassA 相当于 this.newMethod = function ClassA(sColor)
{
this.color=sColor;
this.sayColor=function(){
;
}
}
this.newMethod 是函数类型,this.newMethod(Scolor)是相当于调用函数ClassA,所以需要参数Scolor
function ClassA(sColor)
{
this.color=sColor;
this.sayColor=function(){
;
}
}
function ClassB(sColor,sName){
this.newMethod=ClassA;
this.newMethod(sColor);
.......
}
你可以将两个方法都看成是两个不同的类,而ClassB中有一个newMethod的属性,只是这个属性是ClassA类型的,类似于类中的复杂类型
this.newMethod(sColor); 其实是实例化ClassA,所以需要传递一个sColor的参数,sColor与newMethod是不同类型的,是不能用=赋值的