zoukankan      html  css  js  c++  java
  • 面向对象的编程(二)构造函数的继承

    这里主要讲讲,对象之间的继承方法

    现在有一个program的构造函数:

    还有一个book的构造函数:

    怎么样使得“book”继承“program”呢?

    1.构造函数的绑定

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

     1 function Program(){
     2     this.task = '编程';
     3 }
     4  function Book(name,color){
     5      Program.apply(this,arguments);
     6      this.name = name;
     7      this.color = color;
     8  }
     9  Book.prototype.type = '前端';
    10  Book.prototype.read =function(){alert('多读,多实践');}
    11  var book1 = new Book('JavaScript','黄色');
    12  alert(book1.task);//输出:编程

    2.prototype模式

     使用prototype的属性。

     

    这里,我们直接让Book的prototype对象,指向Program的实例,就能继承Program了。

    代码的第一行,我们将Book的prototype对象指向一个Program的实例。

      Book.prototype = new Program();这等于删除了prototype对象原先的值,然后赋予一个新值。

    此时,Book.prototype.constructor指向Program

    Book的实例化对象,每一个实例也有一个constructor属性,默认调用prototype对象的constructor属性,book1.constructor也会指向Program;这导致继承连的紊乱

    所以我们需要将属性改回指向原来的构造函数,这是很重要的一点,编程时务必要遵守。下文都遵循这一点,即如果替换了prototype对象,

      o.prototype = {};

    那么,下一步必然是为新的prototype对象加上constructor属性,并将这个属性指回原来的构造函数。

      o.prototype.constructor = o;

  • 相关阅读:
    Dubbo学习记录(一)
    Quartz定调度简单案例
    oracle中批量生成字段类型的脚本
    MsSQLserver中修改字段值系统自动生成的脚本
    根据oracle的主键列生成SQLserver的主键
    SQLServer2005如何批量修改架构名
    win10 下oracle tns通过IP无法访问的解决办法
    PD PDM模型中关系设置为概念模型样式
    PB12.5.2安装
    Java Web 项目目录规范
  • 原文地址:https://www.cnblogs.com/xuzhudong/p/6537848.html
Copyright © 2011-2022 走看看