js的封装和继承

2017-12-22  本文已影响0人  Aaron阿槑与阿瓜

封装

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();  //程序员

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

上一篇 下一篇

猜你喜欢

热点阅读