JavaScript中的面向对象----继承


1、对象冒充

functionClassA(sColor){
  this.color=sColor;
  this.sayColor=function(){
    alert(this.color);
  }
}
functionClassB(sColor,sName){
  this.newMethod=ClassA;
  this.newMethod(sColor);
  deletethis.newMethod;
  
  this.name=sName;
  this.sayName=function(){
    alert(this.name);
  }
}
varobjB=newClassB("colorofobjB","nameofobjB");
objB.sayColor();

  2、call方法

functionClassA(sColor){
  this.color=sColor;
  this.sayColor=function(){
    alert(this.color);
  }
}
functionClassB(sColor,sName){
//  this.newMethod=ClassA;
//  this.newMethod(sColor);
//  deletethis.newMethod;
  ClassA.call(this,sColor);
  
  this.name=sName;
  this.sayName=function(){
    alert(this.name);
  }
}
varobjB=newClassB("colorofobjB","nameofobjB");
objB.sayColor();

  3、apply方法

functionClassA(sColor){
  this.color=sColor;
  this.sayColor=function(){
    alert(this.color);
  }
}
functionClassB(sColor,sName){
//  this.newMethod=ClassA;
//  this.newMethod(sColor);
//  deletethis.newMethod;
  ClassA.apply(this,newArray(sColor));
  
  this.name=sName;
  this.sayName=function(){
    alert(this.name);
  }
}
varobjB=newClassB("colorofobjB","nameofobjB");
objB.sayColor();

  4、原型链方法

functionClassA(){
}
ClassA.prototype.color="color";
ClassA.prototype.sayColor=function(){
  alert(this.color);
}
functionClassB(){
}
ClassB.prototype=newClassA();
ClassB.prototype.name="name";
ClassB.prototype.sayName=function(){
  alert(this.name);
}
varobjB=newClassB();
objB.color="colorofobjB";
objB.name="nameofobjB";
objB.sayColor();

  5、混合方式

functionClassA(sColor){
  this.color=sColor;
}
ClassA.prototype.sayColor=function(){
  alert(this.color);
}
functionClassB(sColor,sName){
  ClassA.call(this,sColor);
  this.name=sName;
}
ClassB.prototype=newClassA();
ClassB.prototype.sayName=function(){
  alert(this.name);
}
varobjB=newClassB("colorofobjB","nameofobjB");
objB.sayColor();


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3