1.   我们先看JS类的继承
  1.  <!DOCTYPE html>
    <html> <head>
    <meta charset="UTF-8">
    <title>JS类的继承</title>
    </head> <body>
    /* -- 类式继承 -- */
    <script type="text/javascript">
    //先声明一个超类
    var Animal = function(name) {
    this.name = name;
    }
    //给这个超类的原型对象上添加方法
    Animal.prototype.Eat = function() {
    console.log(this.name + " Eat");
    };
    //实例化这个超
    var a = new Animal("Animal"); //再创建构造函数对象类
    var Cat = function(name, sex) {
    //这个类中要调用超类Animal的构造函数,并将参数name传给它
    Animal.call(this, name);
    this.sex = sex;
    }
    //这个子类的原型对象等于超类的实例
    Cat.prototype = new Animal();
    //因为子类的原型对象等于超类的实例,所以prototype.constructor这个方法也等于超类构造函数 console.log(Cat.prototype.constructor);
    //这个是Animal超类的引用,所以要从新赋值为自己本身
    Cat.prototype.constructor = Cat;
    console.log(Cat.prototype.constructor);
    //子类本身添加了getSex 方法
    Cat.prototype.getSex = function() {
    return this.sex;
    }
    //实例化这个子类
    var _m = new Cat('cat', 'male');
    //自身的方法
    console.log(_m.getSex()); //male
    //继承超类的方法
    console.log(_m.Eat()); //cat
    </script>
    </body> </html>
  2.   我们再看JS原型继承
     <!DOCTYPE html>
    <html> <head>
    <meta charset="UTF-8">
    <title>JS原型继承</title>
    </head> <body>
    <!--原型继承-->
    <script type="text/javascript">
    //clone()函数用来创建新的类Person对象
    var clone = function(obj) {
    var _f = function() {};
    //这句是原型式继承最核心的地方,函数的原型对象为对象字面量
    _f.prototype = obj;
    return new _f;
    } //先声明一个对象字面量
    var Animal = {
    somthing: 'apple',
    eat: function() {
    console.log("eat " + this.somthing);
    }
    }
    //不需要定义一个Person的子类,只要执行一次克隆即可
    var Cat = clone(Animal);
    //可以直接获得Person提供的默认值,也可以添加或者修改属性和方法
    console.log(Cat.eat());
    Cat.somthing = 'orange';
    console.log(Cat.eat()); //声明子类,执行一次克隆即可
    var Someone = clone(Cat);
    </script>
    </body> </html>
  3. 我们可以试验一下,JS类的继承 children.constructor==father 返回的是true,而原型继承children.constructor==father 返回的是false;

JS原型继承与类的继承的更多相关文章

  1. JS原型继承和类式继承

    前言 一个多月前,卤煮读了一篇翻译过来的外国人写的技术博客.此君在博客中将js中的类(构造)继承和原型继承做了一些比较,并且得出了结论:建议诸位在开发是用原型继承.文中提到了各种原型继承的优点,详细的 ...

  2. JS原型,原型链,类,继承,class,extends,由浅到深

    一.构造函数和原型 1.构造函数.静态成员和实例成员 在ES6之前,通常用一种称为构造函数的特殊函数来定义对象及其特征,然后用构造函数来创建对象.像其他面向对象的语言一样,将抽象后的属性和方法封装到对 ...

  3. js原生设计模式——2面向对象编程之继承—new类式继承

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  4. js原生继承之——类式继承实例(推荐使用)

    <!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8&qu ...

  5. js原型链理解(4)-经典继承

    经典继承就是组合继承,就是组合构造函数和原型链的优点混合继承. 1.避免引用类型的属性初始化 2.避免相同方法的多次初始化 function Super(name){ this.ages = [100 ...

  6. java类为什么是单继承。类的继承,实现接口。

    java中提供类与类之间提供单继承. 提供多继承会可能出现错误,如:一个类继承了两个父类,而两个父类里面都有show()方法. class Fulei1{ public void show(){ Sy ...

  7. java继承2——类与继承(转)

    一.你了解类吗? 在Java中,类文件是以.java为后缀的代码文件,在每个类文件中最多只允许出现一个public类,当有public类的时候,类文件的名称必须和public类的名称相同,若不存在pu ...

  8. JavaScript 类式继承与原型继承

    交叉着写Java和Javascript都有2年多了,今天来总结下自己所了解的Javascript类与继承. Javascript本身没有类似Java的面向对象的类与继承术语,但其基于原型对象的思想却可 ...

  9. js类的继承

    1.类式继承 首先要做的是创建构造函数.按惯例,其名称就是类名,首字母应该大写.在构造函数中,创建实例属性要用关键字this .类的方法则被添加到prototype对象中.要创建该类的实例,只需结合关 ...

随机推荐

  1. Linux 下的编译安装说明

    https://www.linuxidc.com/Linux/2017-02/140309.htm

  2. centos 6.5 搭建开源堡垒机 Teleport 遇到的问题解决

    几款开源的堡垒机 下面进行 teleport 的安装: https://docs.tp4a.com/install/#11 异常1:libc.so.6: version `GLIBC_2.14' no ...

  3. [CF587F]Duff is Mad[AC自动机+根号分治+分块]

    题意 给你 \(n\) 个串 \(s_{1\cdots n}\) ,每次询问给出 \(l,r,k\) ,问在 \(s_{l\cdots r}\) 中出现了多少次 \(s_k\) . \(n,q,\su ...

  4. R实战 第八篇:重塑数据(reshape2)

    数据重塑通常使用reshape2包,reshape2包用于实现对宽数据及长数据之间的相互转换,由于reshape2包不在R的默认安装包列表中,在第一次使用之前,需要安装和引用: install.pac ...

  5. From today 2019.02.27

    HIT开设软件构造课程,需要在博客上分享记录学习体验,感觉还是挺好的. 以后会不定期更新一些关于学下java的笔记和实验相关的内容.

  6. Node.js Event Loop 的理解 Timers,process.nextTick()

    写这篇文章的目的是将自己对该文章的理解做一个记录,官方文档链接The Node.js Event Loop, Timers, and process.nextTick() 文章内容可能有错误理解的地方 ...

  7. Redis学习01_redis安装部署(centos)

    原文: http://www.cnblogs.com/herblog/p/9305668.html Redis学习(一):CentOS下redis安装和部署 1.基础知识  redis是用C语言开发的 ...

  8. 从两个设计模式到前端MVC-洪宇

    引言 本文将从策略模式和观察者模式两个设计模式讲起,接着过渡到一个经典的复合模式- MVC架构,进而介绍MVC在Web上的适应-Model2架构.之后,我们将视野扩展到前端MVC,看一看前端MVC经典 ...

  9. 跟踪分析Linux内核的启动过程小解

    跟踪分析Linux内核的启动过程 “20135224陈实  + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029 ...

  10. 《Linux内核分析》第三周:Linux系统启动过程

    杨舒雯 原创作品转载请注明出处 Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 一.实验--使用gdb跟踪调试内 ...