美文网首页
js的封装和继承

js的封装和继承

作者: Aaron阿槑与阿瓜 | 来源:发表于2017-12-22 15:27 被阅读0次

    封装

    1、利用封装

     function person(name,age)
       {
        this.name=name;
        this.age=age;
    
        this.showName=function()
        {
            alert(this.name);
        }
        this.showAge=function()
        {
            alert(this.age);
        }
       }
    

    优点:会为每个对象创建独享的函数对象,所有的属性和方法都为私有的

    缺点:方法和属性都是固定的,类似于java中的封装,方法和属性都是固定的

    2、混合构造函数/原型方式:

    function person(name,age)
      {
        this.name=name;
        this.age=age;
      }
      person.prototype={
            showName:function()
            {
                alert(this.name);
            },
            showAge:function()
            {
                alert(this.age);
            }
      }
       var op=new person('blue',11);  
       op.showAge();
    

    优点:属性私有后,改变各自的属性不会影响别的对象。同时,方法也是由各个对象共享的。在语义上符合面向对象的思想;

    继承

    1、包括属性的继承和方法的继承;

    function person(name,sex)
    {
        this.name=name;
        this.sex=sex;
    }
    person.prototype={
        showName:function()
        {
            alert(this.name);
        },
        showSex:function()
        {
            alert(this.sex);
        }
    }
    
    
    function worker(name,sex,job)
    {
        person.call(this,name,sex);     //构造函数伪装,调用父级的构造函数-为了继承属性
        this.job=job;
    }
    
    //原型链  通过原型继承父类的方法;
    
    for(attr in person.prototype)
    {
        worker.prototype[attr]=person.prototype[attr];
    }
    worker.prototype.showJob=function()
    {
        alert(this.job);
    }
    
     var op=new person('blue','男');  
      var ow=new worker('blue','男','程序员');
    
      op.showName();  //blue
      op.showSex();  //男
      ow.showName();  //blue
      ow.showSex();  //男
      ow.showJob();  //程序员
    

    优点:父类新加的功能,子类也具备,子类新加的功能,不影响父类;

    相关文章

      网友评论

          本文标题:js的封装和继承

          本文链接:https://www.haomeiwen.com/subject/ijfxgxtx.html