继承 第二天

继承是面向对象的一个核心概念,其他主要面向对象的继承主要靠两种方式实现继承 一种是继承 另一种是接口实现

一.原型继承

  function Box(){

           this.name=‘lll’;                       //被继承的函数叫做超类型(父类型 基类)

}

   function Desk(){                              //继承的函数叫做子类型(子类,派生类)

                  this.age=100;
}

Desk.prototype=new Box();

var desk=new Desk();

alert(desk.name);

 function Table(){

   this.address=‘lol‘;}

Table.prototype=new Desk();

var table=new Table();alert(table.name);

  

Desk 的原型获得是Box()的实例和原型  以此类推

就近元则:先查询实例有没有该属性 ,然后在查找原型里面是否还有该属性

alert(desk instanceof Box)     true

  

二.借用构造函数(对象冒充函数)

解决引用共享和超类型传参数的问题

functon Box(name,age){
this.name=name;
this.age=age;
 //this.family=[‘哥哥‘,‘姐姐‘,‘弟弟‘]
}

Box.prototype.family=‘家庭‘;
function Desk(){

Box.call(this,‘lll‘,100);

}

var desk=new Desk();
alert(desk.name);alert(desk.family)   对象冒充解决了共享问题和传参数的问题 但是只能继承实例的问题  不能继承原型    方法放在构造里,浪费空间,每次实例化都分配地址

 



三.组合继承(对象冒充继承和原型继承)

functon Box(name,age){
this.name=name;
this.age=age;
 //this.family=[‘哥哥‘,‘姐姐‘,‘弟弟‘]
}

Box.prototype.run(){

  return this.name+this.age;

}

function Desk(){

Box.call(this,‘lll‘,100);

}

Desk.prototype=new Box();

var desk=new Desk();
alert(desk.name);
alert(desk.family)
alert(desk.run())

  



四.原型继承

function obj(0){                                     //中转函数

   function F(){}     用来存储传递过来的对象
  F.prototype=o;
  return  new F();

}

var box={

     name:‘lll‘;
     age:100;     family:[‘哥哥‘ ,‘姐姐‘]

}

var  box1=obj(box)                  box1 等于new F();
alert(box1.family);box1.push(‘弟弟‘)
alert(box1.family);

var  box2=obj(box);alert(box2.family);                          引用类型属性共享了

  

五.寄生式继承(原型加工厂模式)

function obj(o){                                     //中转函数

   function F(){}     用来存储传递过来的对象
  F.prototype=o;
  return  new F();

}

  function create(o){                   //寄生式继承

  var f=obj(o);   f.run=function(){

         return this.name}  return  f;}

var box={

     name:‘lll‘;
     age:100;
     family:[‘哥哥‘ ,‘姐姐‘]

}   var box1=create(box);   alert(box1.name)

  



六寄生组合继承

function create(box, desk) {
	var f = obj(box.prototype);
	f.constructor = desk;				//调整原型构造指针
	desk.prototype = f;
}

function Box(name, age) {
	this.name = name;
	this.age = age;
}

Box.prototype.run = function () {
	return this.name + this.age + ‘运行中...‘
}

function Desk(name, age) {
	Box.call(this, name, age);				//对象冒充
}

//通过寄生组合继承来实现继承
create(Box, Desk);							//这句话用来替代Desk.prototype = new Box();

var desk = new Desk(‘Lee‘, 100);
alert(desk.run());
alert(desk.constructor);

  



继承 第二天

时间: 2024-11-07 09:22:44

继承 第二天的相关文章

javascript继承有5种实现方式

1.对象冒充 function Parent(username){ this.username = username; this.hello = function(){ alert(this.username); } } function Child(username,password){ //通过以下3行实现将Parent的属性和方法追加到Child中,从而实现集成实现继承 //1.this.method是作为一个临时的属性,并且指向Parent所指向的对象, //2.执行this.metho

js的5种继承方式——前端面试

js主要有以下几种继承方式:对象冒充,call()方法,apply()方法,原型链继承以及混合方式.下面就每种方法就代码讲解具体的继承是怎么实现的. 1.继承第一种方式:对象冒充 1 function Parent(username){ 2 this.username = username; 3 this.hello = function(){ 4 alert(this.username); 5 } 6 } 7 function Child(username,password){ 8 //通过以

js 中的继承

面试的时候总是被问到js的继承,平时都是应用,最近有时间就把js 的继承整理了一下,和java 中的继承做了一下比较,代码如下: js继承有5种实现方式: 1.对象冒充 <script>   function Parent(username){      this.username = username;      this.hello = function(){        alert(this.username);      }    }    function Child(userna

js实现继承的多种方式

1:原型链方式,即子类通过prototype将所有在父类中通过prototype追加的属性和方法都追加到Child,从而实现了继承 function Person(){ } Person.prototype.hello = "hello"; Person.prototype.sayHello = function(){ alert(this.hello); } function Child(){ } Child.prototype = new Person();//这行的作用是:将Pa

js如何实现继承

js继承有5种实现方式:1.继承第一种方式:对象冒充  function Parent(username){    this.username = username;    this.hello = function(){      alert(this.username);    }  }  function Child(username,password){    //通过以下3行实现将Parent的属性和方法追加到Child中,从而实现继承    //第一步:this.method是作为一

web前端开发必懂之一:JS继承和继承基础总结

首先,推荐一篇博客豪情的博客JS提高篇: http://www.cnblogs.com/jikey/p/3604459.html ,里面的链接全是精华, 一般人我不告诉他; 我们会先从JS的基本的设计模式开始,由浅入深: 工厂模式:因为使用用一个接口创建很多对象会产生大量的重复代码,为了解决这个问题,人们就开始使用工厂模式: <!DOCTYPE html> <html> <head> <title></title> <meta charse

JavaScript学习13 JavaScript中的继承

JavaScript学习13 JavaScript中的继承 继承第一种方式:对象冒充 <script type="text/javascript"> //继承第一种方式:对象冒充 function Parent(username) //父类对象 { this.username = username; //下面的代码最关键的部分就是将子对象的this传递给了父对象 this.sayHello = function() { alert(this.username); } } f

js继承的实现

js继承有5种实现方式: 1.继承第一种方式:对象冒充   function Parent(username){     this.username = username;     this.hello = function(){       alert(this.username);     }   }   function Child(username,password){     //通过以下3行实现将Parent的属性和方法追加到Child中,从而实现继承     //第一步:this.

js继承有5种实现方式

js继承有5种实现方式:1.继承第一种方式:对象冒充  function Parent(username){    this.username = username;    this.hello = function(){      alert(this.username);    }  }  function Child(username,password){    //通过以下3行实现将Parent的属性和方法追加到Child中,从而实现继承    //第一步:this.method是作为一