zoukankan      html  css  js  c++  java
  • 面向对象的编程(五)

    总结下这几种方法。

    第一种:构造函数绑定,即用call(apply)把父对象的this指向改为子对象
    缺点:不能继承原型上的属性和方法;

    第二种:prototype模式,即把子对象的prototype对象指向Animal的一个实例;
    缺点:如果子对象的prototype对象上有属性或方法时,将被清除;
    注意:当改了prototype对象的constructor时,记得改回来,否则将造成继承链紊乱;如下例子:

    第三种:直接继承prototype,即child.prototype = parent.prototype;
    优点:相比第二种效率更高,比较省内存;
    缺点:如果子对象的prototype对象上有属性或方法时,将被清除;
    且子对象的prototype对象修改后父对象的prototype也会被修改;

    第四种:利用空对象作为中介,第三种的升级版;
    缺点:如果子对象的prototype对象上有属性或方法时,将被清除;

    第五种:拷贝继承
    缺点:只能继承原型上的属性和方法;
    优点:如果子对象的prototype对象上有属性或方法时,不会被清除,
    且子对象的prototype对象修改后父对象的prototype不会被修改;

    总结:继承加在原型上的属性和方法时用第五种,而继承写在构造函数里的属性和方法则用第一种,两则结合用

    下面是一个大的例子,可以多研究下:

    注意红色方框内的内容,设置student.prototype = Object.create(Person.prototype),student.prototype.constructor是指向person的,所以需要重新改回到student。

    原型链:

  • 相关阅读:
    手机领域的各种角色介绍
    windows配置教程
    windows7安装教程(vmware)
    /etc/profile、~/.bash_profile、~/.bashrc和/etc/bashrc
    vmware自定义网段
    wps去除首字母自动大写
    Windows和Linux创建软链接和硬链接
    计算机的组成部件及其厂商
    windows开机锁定小键盘
    PL/SQL Developer安装教程
  • 原文地址:https://www.cnblogs.com/xuzhudong/p/6539321.html
Copyright © 2011-2022 走看看