浅析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 相关文章推荐
原生js做的手风琴效果的导航菜单
Nov 08 Javascript
javascript数据类型示例分享
Jan 19 Javascript
原生JavaScript实现滚动条效果
Mar 24 Javascript
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换
Feb 19 Javascript
JavaScript编写一个贪吃蛇游戏
Mar 09 Javascript
Javascript 实现匿名递归的实例代码
May 25 Javascript
vue+swiper实现侧滑菜单效果
Dec 28 Javascript
tangram.js库实现js类的方式实例分析
Jan 06 Javascript
详解JavaScript 作用域
Jul 14 Javascript
js实现带积分弹球小游戏
Jul 21 Javascript
Postman环境变量全局变量使用方法详解
Aug 13 Javascript
如何构建一个Vue插件并生成npm包
Oct 26 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
phpBB BBcode处理的漏洞
2006/10/09 PHP
COM in PHP (winows only)
2006/10/09 PHP
php中变量及部分适用方法
2008/03/27 PHP
PHP获取mysql数据表的字段名称和详细信息的方法
2014/09/27 PHP
PHP Web木马扫描器代码分享
2015/09/06 PHP
javascript 当前日期加(天、周、月、年)
2009/08/09 Javascript
Jquery 点击按钮显示和隐藏层的代码
2011/07/25 Javascript
jQuery+PHP打造滑动开关效果
2014/12/16 Javascript
javascript 事件处理示例分享
2014/12/31 Javascript
JS仿Windows开机启动Loading进度条的方法
2015/02/26 Javascript
浅谈jquery中delegate()与live()
2015/06/22 Javascript
JS封装的自动创建表格的实现代码
2016/06/15 Javascript
利用Angularjs实现幻灯片效果
2016/09/07 Javascript
浅谈Angular7 项目开发总结
2018/12/19 Javascript
echarts实现折线图的拖拽效果
2019/12/19 Javascript
JS深入学习之数组对象排序操作示例
2020/05/01 Javascript
[01:00:17]DOTA2-DPC中国联赛 正赛 SAG vs Dynasty BO3 第二场 1月25日
2021/03/11 DOTA
Python实现的二维码生成小软件
2014/07/11 Python
Python yield 使用浅析
2015/05/28 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
Flask框架URL管理操作示例【基于@app.route】
2018/07/23 Python
Python字符串中添加、插入特定字符的方法
2019/09/10 Python
python有序查找算法 二分法实例解析
2020/02/18 Python
关于torch.optim的灵活使用详解(包括重写SGD,加上L1正则)
2020/02/20 Python
Python3.6 中的pyinstaller安装和使用教程
2020/03/16 Python
python logging模块的使用详解
2020/10/23 Python
HTML5 Canvas如何实现纹理填充与描边(Fill And Stroke)
2013/07/15 HTML / CSS
比利时香水网上商店:NOTINO
2018/03/28 全球购物
VC++笔试题
2014/10/13 面试题
单位创先争优活动方案
2014/01/26 职场文书
员工晚婚的请假条
2014/02/08 职场文书
制作部班长职位说明书
2014/02/26 职场文书
村容村貌整治方案
2014/05/21 职场文书
2016年寒假政治学习心得体会
2015/10/09 职场文书
2019暑期安全倡议书!
2019/06/27 职场文书
超级实用!五步法则,教你写好年终工作总结
2019/12/05 职场文书