浅析JS原型继承与类的继承


Posted in Javascript onApril 07, 2016

我们先看JS类的继承

<!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>

 我们再看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>

我们可以试验一下,JS类的继承 children.constructor==father 返回的是true,而原型继承children.constructor==father 返回的是false;

以上这篇浅析JS原型继承与类的继承就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Jquery调用webService远程访问出错的解决方法
May 21 Javascript
asp.net下使用jquery 的ajax+WebService+json 实现无刷新取后台值的实现代码
Sep 19 Javascript
JS动态创建Table,Tr,Td并赋值的具体实现
Jul 05 Javascript
JS获取html对象的几种方式介绍
Dec 05 Javascript
javascript贪吃蛇完整版(源码)
Dec 09 Javascript
利用jQuery简单实现产品展示图片左右滚动功能(示例代码)
Jan 02 Javascript
jQuery实现按键盘方向键翻页特效
Mar 18 Javascript
JS显示日历和天气的方法
Mar 01 Javascript
深入理解JavaScript和TypeScript中的class
Apr 22 Javascript
详解react内联样式使用webpack将px转rem
Sep 13 Javascript
一些可能会用到的Node.js面试题
Jun 15 Javascript
vue+ts下对axios的封装实现
Feb 18 Javascript
AngularJs 弹出模态框(model)
Apr 07 #Javascript
详解AngularJS 模态对话框
Apr 07 #Javascript
分离与继承的思想实现图片上传后的预览功能:ImageUploadView
Apr 07 #Javascript
jQuery动态添加
Apr 07 #Javascript
javascript模块化简单解析
Apr 07 #Javascript
jquery编写Tab选项卡滚动导航切换特效
Jul 17 #Javascript
js仿QQ中对联系人向左滑动、滑出删除按钮的操作
Apr 07 #Javascript
You might like
打造超酷的PHP数据饼图效果实现代码
2011/11/23 PHP
Yii框架引用插件和ckeditor中body与P标签去除的方法
2017/01/19 PHP
JavaScript中的私有成员
2006/09/18 Javascript
使用js完成节点的增删改复制等的操作
2014/01/02 Javascript
浅谈NodeJS中require路径问题
2015/05/07 NodeJs
jQuery Mobile开发中日期插件Mobiscroll使用说明
2016/03/02 Javascript
JS获取当前脚本文件的绝对路径
2016/03/02 Javascript
javascript制作照片墙及制作过程中出现的问题
2016/04/04 Javascript
JS hashMap实例详解
2016/05/26 Javascript
深入剖析JavaScript面向对象编程
2016/07/12 Javascript
JS实现快速的导航下拉菜单动画效果附源码下载
2016/11/01 Javascript
JavaScript数组迭代方法
2017/03/03 Javascript
VUE开发一个图片轮播的组件示例代码
2017/03/06 Javascript
Node.js和Express简单入门介绍
2017/03/24 Javascript
微信小程序实现弹出菜单
2018/07/19 Javascript
微信小程序实现即时通信聊天功能的实例代码
2018/08/17 Javascript
Angular angular-file-upload文件上传的示例代码
2018/08/23 Javascript
微信小程序ibeacon三点定位详解
2018/10/31 Javascript
vue-socket.io接收不到数据问题的解决方法
2020/05/13 Javascript
JavaScript 常见的继承方式汇总
2020/09/17 Javascript
vue v-model的用法解析
2020/10/19 Javascript
python调用shell的方法
2013/11/20 Python
python命令行解析之parse_known_args()函数和parse_args()使用区别介绍
2018/01/24 Python
PyQt5每天必学之切换按钮
2020/08/20 Python
Python生成器的使用方法和示例代码
2019/03/04 Python
PyTorch之图像和Tensor填充的实例
2019/08/18 Python
Python 获取numpy.array索引值的实例
2019/12/06 Python
俄罗斯珠宝市场的领导者之一:Бронницкий ювелир
2019/10/02 全球购物
你常见到的runtime exception
2016/09/05 面试题
体育系毕业生自荐信
2014/06/28 职场文书
就业协议书怎么填
2014/09/15 职场文书
会计人员岗位职责
2015/02/03 职场文书
资料员岗位职责
2015/02/10 职场文书
迎新生晚会主持词
2015/06/30 职场文书
创业计划书之暑假培训班
2019/11/09 职场文书
浅谈克隆 JavaScript
2021/11/02 Javascript