zoukankan      html  css  js  c++  java
  • JavaScript prototype继承中的问题

    function Person(name,sex){
        this.name=name;
        this.sex=sex;
    }
    Person.prototype.showName=function(){
        console.log(this.name);
    }
    Person.prototype.showSex=function(){
        console.log(this.sex);
    }
    
    Person.prototype.walk=function(){
        console.log("向前走");
    }
    Person.prototype.language="汉语";
    //----------------------------------------------------
    
    function Worker(name,sex,job){
        Person.call(this,name,sex);//调用父类构造
        this.job=job;
    }
    
    /*
     如果子类Woker以 Worker.prototype=Person.prototype 这样的方式继承时
     采用原型链的方式,此方式的缺点就是:
     1、父类中也会子类中独有的方法;
        Person.prototype.showJob
    
     2、子类如果重写父类中的属性和方法,那么父类中的属性和方法就会被覆盖掉
        p1.walk();//向后走
        console.log(p1.language)//English
    
     所以为了避免影响父类中的方法,采用for in
     */
    
    //Worker.prototype=Person.prototype
    for(var i in Person.prototype){
        Worker.prototype[i]=Person.prototype[i];
    }
    
    Worker.prototype.showJob=function(){
        console.log(this.job);
    }
    
    Worker.prototype.walk=function(){//采用原型链的方式会覆盖掉父类中的方法
        console.log("向后走");
    }
    
    Worker.prototype.language="English";
    
    
    var p1=new Person("blue","男")
    p1.showName();//blue
    p1.showSex();//
    p1.walk();//向前走
    console.log(p1.language)//汉语
    
    console.log(Person.prototype.showJob)//undefined  如果采用 Worker.prototype=Person.prototype 那么Person类中就有子类showJob独有的方法
    
    var oWk=new Worker("John","男","设计师")
    oWk.showName();
    oWk.showSex();
    oWk.showJob();
    oWk.walk();
    console.log(oWk.language)//English
  • 相关阅读:
    PHP关于VC11,VC9,VC6以及Thread Safe和Non Thread Safe版本选择的问题
    团队展示
    测试与优化:设计模式的应用和初次尝试多线程
    结对编程,三年级混合运算
    一个大气又可爱的标题
    随笔
    C#操作word类文件
    TypeError: Object of type 'int32' is not JSON serializable ——已解决
    Error: UserWarning: Ignoring URL... 已解决
    tensorflow(二)----线程队列与io操作
  • 原文地址:https://www.cnblogs.com/eaysun/p/4422377.html
Copyright © 2011-2022 走看看