美文网首页
面向对象继承的五种方法

面向对象继承的五种方法

作者: 刘宏儿 | 来源:发表于2019-02-27 10:10 被阅读0次

1.call或apply

function Cat(name,color){

    Animal.call(this);//改变一个Animal的指向

    this.name = name;

    this.color = color;
  }

  var cat1 = new Cat("大毛","黄色");
  alert(cat1.species); // 动物

这种办法的缺点是只能拿到构造函数内部的属性和方法(即只能拿到私有属性)

2.使用prototype属性

 Cat.prototype = new Animal();//Animal里的prototype属性的对象和方法会被实例对象继承

  Cat.prototype.constructor = Cat;//每一个实例对象都有一个constructor属性指向它的构造函数,要将Animal的改为Cat

  var cat1 = new Cat("大毛","黄色");

  alert(cat1.species); // 动物

缺点:把私有的和公共的全部放在了子构造函数的原型对象

3.第二种方法的改进,直接将prototype赋值

Cat.prototype = Animal.prototype;

  Cat.prototype.constructor = Cat;

  var cat1 = new Cat("大毛","黄色");

  alert(cat1.species); // 动物

缺点:存在引用关系,相当于浅拷贝

4.利用空对象作为中介(最终选择的)

var F = function(){};

  F.prototype = Animal.prototype;

  Cat.prototype = new F();

  Cat.prototype.constructor = Cat;

F是空对象,所以几乎不占内存。这时,修改Cat的prototype对象,就不会影响到Animal的prototype对象。
允许父级影响子集,不允许子集影响父级

5.拷贝继承

function extend2(Child, Parent) {

    var p = Parent.prototype;

    var c = Child.prototype;

    for (var i in p) {

      c[i] = p[i];

      }
  }

利用for循环将子元素一个一个拷贝,深拷贝,这种方法在复杂的时候不适用

相关文章

  • js面向对象:构造函数的继承

    参考文档++Javascript面向对象编程(二):构造函数的继承今天要介绍的是,对象之间的"继承"的五种方法,怎...

  • JavaScript之面向对象编程

    五、面向对象编程 目录:面向对象原型继承、面向对象class继承(ES6引入的) 1.面向对象原型继承 类:模板 ...

  • 面向对象继承的五种方法

    1.call或apply 这种办法的缺点是只能拿到构造函数内部的属性和方法(即只能拿到私有属性) 2.使用prot...

  • 面向对象继承复习

    js基础的面向对象的继承 构造函数继承 这种方法的缺陷是只会继承构造函数上的实例属性,并不会继承原型对象上的属性,...

  • Java从入门到入坑(基础篇)

    01:面向对象 1:什么是面向对象 面向对象,面向过程 面向对象的三大基本特征和五大基本原则 三大特性:封装,继承...

  • 王艳华Pythonday03

    Python的面向对象 Java 面向对象 继承

  • JavaScript - 面向对象 - 继承

    这一节,主要讲解面向对象的继承,回顾上一节讲解到判断对象原型和实例对象的两种方法.废话不多说,直接上代码 ! 继承...

  • java基础-day10-面向对象4.0

    面向对象4.0 1. 面向对象之继承 1.1 生活中的继承 1.2 Java中的继承 1.3 子类对象创建,会调...

  • Python面向对象继承

    面向对象继承 面向对象编程 (OOP),英语全称:Object Oriented Programming,面向对象...

  • JAVA语言第二课

    JAVA面向对象——四大特征 继承篇——extendsJava 继承继承的概念继承是java面向对象编程技术的...

网友评论

      本文标题:面向对象继承的五种方法

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