浅析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 相关文章推荐
JavaScript 常用函数库详解
Oct 21 Javascript
JsRender for index循环索引用法详解
Oct 31 Javascript
jQuery中 attr() 方法使用小结
May 03 Javascript
在HTML中插入JavaScript代码的示例
Jun 03 Javascript
微信小程序 setData使用方法及常用错误解决办法
May 11 Javascript
js 发布订阅模式的实例讲解
Sep 10 Javascript
vue全局组件与局部组件使用方法详解
Mar 29 Javascript
Angular5升级RxJS到5.5.3报错:EmptyError: no elements in sequence的解决方法
Apr 09 Javascript
Bootstrap Fileinput 4.4.7文件上传实例详解
Jul 25 Javascript
微信小程序实现基于三元运算验证手机号/姓名功能示例
Jan 19 Javascript
vue实现密码显示与隐藏按钮的自定义组件功能
Apr 23 Javascript
微信小程序页面调用自定义组件内的事件详解
Sep 12 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服务器页面间跳转实现方法
2012/08/02 PHP
PHP SPL标准库之接口(Interface)详解
2015/05/11 PHP
ThinkPHP里用U方法调用js文件实例
2015/06/18 PHP
php常用字符函数实例小结
2016/12/29 PHP
javascript 出生日期和身份证判断大全
2008/11/13 Javascript
JS 判断代码全收集
2009/04/28 Javascript
理解Javascript_10_对象模型
2010/10/16 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
2014/09/03 Javascript
JavaScript中获取高度和宽度函数总结
2014/10/08 Javascript
Jquery日期选择datepicker插件用法实例分析
2015/06/08 Javascript
jquery实现平滑的二级下拉菜单效果
2015/08/26 Javascript
Bootstrap每天必学之栅格系统(布局)
2015/11/25 Javascript
JS版微信6.0分享接口用法分析
2016/10/13 Javascript
jQuery插件HighCharts绘制2D金字塔图效果示例【附demo源码下载】
2017/03/09 Javascript
vue路由传参页面刷新参数丢失问题解决方案
2019/10/08 Javascript
jQuery实现轮播图源码
2019/10/23 jQuery
js判断非127开头的IP地址的实例代码
2020/01/05 Javascript
浅谈Vue3.0新版API之composition-api入坑指南
2020/04/30 Javascript
JavaScript中常用的3种弹出提示框(alert、confirm、prompt)
2020/11/10 Javascript
Python中属性和描述符的正确使用
2016/08/23 Python
python 获取页面表格数据存放到csv中的方法
2018/12/26 Python
python爬虫 正则表达式解析
2019/09/28 Python
python set集合使用方法解析
2019/11/05 Python
加拿大约会网站:EliteSingles.ca
2018/01/12 全球购物
应届生财务会计求职信
2013/11/05 职场文书
理工类毕业自我鉴定
2014/02/20 职场文书
学习雷锋寄语大全
2014/04/11 职场文书
公安纪律作风整顿剖析材料
2014/10/10 职场文书
2014小学二年级班主任工作总结
2014/12/05 职场文书
戒赌保证书
2015/05/11 职场文书
公积金具结保证书
2015/05/11 职场文书
调解协议书范本
2016/03/21 职场文书
年终工作总结范文
2019/06/20 职场文书
如何撰写出一份完美的商业计划书?
2019/07/12 职场文书
php实现自动生成验证码的实例讲解
2021/11/17 PHP
Spring this调用当前类方法无法拦截的示例代码
2022/03/20 Java/Android