继承

1.传统形式:原型链

Grand.prototype.lastname="zzz"
  function Grand(){}
  var grand= new Grand();
  Father.prototype=grand
  function Father(){
    this.name='ddd'
}
  var father=new Father();
  Son.prototype=Father();
  function Son(){}
  var son=new Son();

  过多的继承了没用的属性

 

2.借用构造函数

function Person(name,age,sex){
    this.name=name;
    this.age=age
    this.sex=sex;
}
function Student(name,age,sex,grade){
    Person.call(this,name,age,sex);
    this.grade=grade;
}
var student =Student()

  不能继承借用构造函数的原型

  每次构造函数都要多走一个函数

 

3.共享原型

Father.prototype.LastName="zzz"
function Father(){}
function Son(){}
function inherit(Target,Origin){
    Target.prototype=Origin.prototype
}
            
inherit(Son,Father);
var son=new Son()

  不能随便改自己的原型

 

4圣杯模式

function inherit(Target,Origin){
    function F(){};
    F.prototype=Origin.prototype;
    Target.prototype=new F();
    Target.prototype.constructor=Target;//改变构造函数为自己
    Target.prototype.uber=Origin.prototype;//可有可无(希望知道自己真正继承自谁)
 }
    Father.prototype.LastName="Deng";
      function Father(){
                
    }
      function Son(){
                
    }
    inherit(Son,Father);
    var son = new Son();
    var father = new Father();

 

上一篇:P2256 一中校运会之百米跑


下一篇:【SSLOJ】最短路