美文网首页
js面向对象:构造函数的继承

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

作者: day_day_up | 来源:发表于2017-03-27 13:40 被阅读0次

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

function Animal(){
    this.species = "动物";
  }
 function Cat(name,color){
    this.name = name;
    this.color = color;
  }

一、 构造函数绑定

第一种方法也是最简单的方法,使用call或apply方法,将父对象的构造函数绑定在子对象上,即在子对象构造函数中加一行:

function Cat(name,color){
    Animal.apply(this, arguments);
    this.name = name;
    this.color = color;
  }
var cat1 = new Cat("大毛","黄色");
alert(cat1.species); // 动物

二、prototype模式

第二种方法更常见,使用prototype属性。如果"猫"的prototype对象,指向一个Animal的实例,那么所有"猫"的实例,就能继承Animal了。

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

三、 直接继承prototype

第三种方法是对第二种方法的改进。由于Animal对象中,不变的属性都可以直接写入Animal.prototype。所以,我们也可以让Cat()跳过 Animal(),直接继承Animal.prototype。

五、 拷贝继承

上面是采用prototype对象,实现继承。我们也可以换一种思路,纯粹采用"拷贝"方法实现继承。简单说,如果把父对象的所有属性和方法,拷贝进子对象,不也能够实现继承吗?这样我们就有了第五种方法。首先,还是把Animal的所有不变属性,都放到它的prototype对象上。

function Animal(){}
Animal.prototype.species = "动物";

然后,再写一个函数,实现属性拷贝的目的。

function extend2(Child, Parent) {
    var p = Parent.prototype;
    var c = Child.prototype;
    for (var i in p) {
      c[i] = p[i];
      }
    c.uber = p;
  }

这个函数的作用,就是将父对象的prototype对象中的属性,一一拷贝给Child对象的prototype对象。
使用的时候,这样写:

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

相关文章

  • 面向对象继承复习

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

  • 面向对象五

    面向对象高级二 总结 PHP 里的面向对象、继承方式 JS 里的继承方式 call(构造函数伪装) 和 proto...

  • 对象的继承

    JS 作为面向对象的弱类型的语言,继承是它非常强大的特征之一 JS继承实现的方式: 1.原型链继承2.构造函数继承...

  • RYF javascript笔记3

    4. 面向对象编程 4.1面向对象编程概述 4.1.1简介 4.1.1.1构造函数 js没有“类”,而改用构造函数...

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

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

  • 创建js对象_new+构造函数

    1、js面向对象 2、new构造函数创建

  • 原型链概述

    JS原型链用来解决JS中继承关系,目前理解肤浅,实觉强制模仿面向对象,有许多不合理之处。 构造函数的继承: fun...

  • JavaScript 面向对象编程

    JavaScript 快速入门 面向对象编程创建对象构造函数忘记写new怎么办?原型继承class继承 面向对象编...

  • 3-javascript 构造函数

    js中面向对象编程是基于构造函数(consstructor)和原型链(prototype)的。 构造函数作为对象的...

  • js原型prototype原型链__proto__以及必会的ne

    什么是构造函数 构造函数是典型的面向对象编程语言,js的对象语言体系,是基于构造函数和原型链的构造函数是生成对象实...

网友评论

      本文标题:js面向对象:构造函数的继承

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