面向对象的三大特性之继承-基础知识总结------彭记(05)

面向对象的三大特性之继承:

js中的某些对象没有一些需要的属性和方法,但是另外的对象有,那么拿过使用,就是继承。

js中继承的实现方式:

1.混入式继承:通过循环将一个对象中的所有属性和方法混入到另外一个对象中:

var me={

  work:function(){

  console.log('敲代码');

  }

};

var mayun={

  money:9999999,

  car:'000',

  manager:function(){

    console.log('管理巴巴。。。');

   }

}

/*遍历,让me对象拥有mayun对象的所有属性*/

for(var key in mayun){

  me[key]=mayuan[key];

}

console.log(me);

2.使用原型实现继承:

function Person(){

  this.name='jack';

  this.age='20';

  this.sayHi=function(){

    console.log('大家好');

  }

}

function Painter(){

  this.name='lose';

  this.age='19';

  this.canPaint=function(){

    console.log('画画');

  }

}

var per=new Person();

var paint=new Painter();

function Student(){

}

/*修改构造函数的protoType属性来设置原型,但是原型只有一个,所以这种方式无法指定多种原型,后面指定的原型会覆盖前面指定的原型*/

/*Student.prototype=per;

var stu=new Student();

console.log(stu);*/

/*利用混入的方式给原型添加属性和方法*/

for(var key in per ){

  Student.prototype[key]=per[key];

}

for(var key in paint){

  Student.prototype[key]=paint[key];

}

var stu=new Student();

console.log(stu);

3.经典的实现继承方式:

 var laoWang={

  company:'wangda',

  money:100000000,

  sayHi:function(){

    console.log('我有钱'+this.name);

  }

}

/*经典继承方式*/

var obj=Object.create(laoWang);

console.log(obj);

/*解决经典继承的兼容性问题*/

function createObj(obj){

  if(Object.create){

    var newObj=Object.crate(obj);

  }else{

      var newObj={};

      for(var key in obj){

       newObj[key]=obj[key];

      }

    }

    return newObj;

}

var obj =createObj(laoWang);

console.log(obj);

转载于:https://www.cnblogs.com/pgm0908/p/7345418.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值