javascript-面向对象之继承

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript-面向对象之继承相关的知识,希望对你有一定的参考价值。

1.原型链继承(构造函数的原型对象等于另一个构造函数实例化的对象)

function Box(){ 

this.name=‘lee‘;

}

function Desk(){

this.age=100; 

}

Desk.prototype=new Box();//Desk继承了Box,形成了一个原型链;

var desk=new Desk(); 

alert(desk.name);//lee

function Table(){

this.height=100;

}

Table.prototype=new Desk();//  Table 继承了Desk

var table=new Table();//table具有两个继承的属性

//使用原型链继承存在的问题:

//1:当原型中存在引用类型时,存在数据修改的问题

//2:子类类型的对象无法给父类传参数

2.对象冒充

function Test(age){

     this.family=["mom","dad"];

      this.age=age;

    }

    function Util(age){

        Test.call(this,age);//指明哪个对象来调用Test函数

        //this就是我们创建的Util对象

    }

//对象冒充的问题 :不能使用原型 所有不能实现数据共享

  3.组合继承(原型链与对象冒充)

    function Test(age){

   this.family=["mom","dad"];

   this.age=age;

   }

   Test.prototype.fun=function(){

   return this.age+this.family;

   }

   function Util(age){

   Test.call(this,age); //对象冒充

   }

   util.prototype=new Text();//这是原型链

   var u=new Util(26);

   alert(u.age);

4.原型式继承  // o是一个对象

function getObj(o){//返回原型是o的一个对象

function F(){}

F.prototype=o;

return new F();

}

//原型对象

var person={

name:"Tom",

family:{‘mom‘,"dad"}

}

var obj1=getObj(person);

5.寄生 继承(原型式+工厂模式)

  function getobj(o){

  function F(){};

  F.prototype=o;

  obj.arr=["html",‘css‘];

  return new F();

 }

 //寄生函数

 function createObj(o){

  var  obj=getobj(o);

  return obj;

 }

 //原型对象

 var person={

   name:"han",

   age:23

   }

 var a=createObj(person);

以上是关于javascript-面向对象之继承的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript面向对象之实现继承的5种方法

JavaScript面向对象编程高速构建继承关系之整合原型链

JavaScript面向对象轻松入门之继承(demo by ES5ES6)

JavaScript初探系列之面向对象

JavaScript 面向对象的程序设计之理解对象属性

web前端技术基础课程详解之JavaScript面向对象