浅析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 相关文章推荐
分享精心挑选的12款优秀jQuery Ajax分页插件和教程
Aug 09 Javascript
JavaScrip实现PHP print_r的数功能(三种方法)
Nov 12 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
May 26 Javascript
jQuery ajaxSubmit 实现ajax提交表单局部刷新
Jul 04 Javascript
jQuery实现带遮罩层效果的blockUI弹出层示例【附demo源码下载】
Sep 14 Javascript
不使用script导入js文件的几种方法
Oct 27 Javascript
javascript事件的绑定基础实例讲解(34)
Feb 14 Javascript
基于JavaScript定位当前的地理位置
Apr 11 Javascript
AngularJs定时器$interval 和 $timeout详解
May 25 Javascript
Node.js fs模块(文件模块)创建、删除目录(文件)读取写入文件流的方法
Sep 03 Javascript
12 种使用Vue 的最佳做法
Mar 30 Javascript
实用的 vue tags 创建缓存导航的过程实现
Dec 03 Vue.js
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 db类库进行数据库操作
2009/03/19 PHP
ThinkPHP3.1新特性之字段合法性检测详解
2014/06/19 PHP
php提交过来的数据生成为txt文件
2016/04/28 PHP
php使用CutyCapt实现网页截图保存的方法
2016/10/03 PHP
PHP中快速生成随机密码的几种方式
2017/04/17 PHP
Laravel框架路由和控制器的绑定操作方法
2018/06/12 PHP
Yii框架多语言站点配置方法分析【中文/英文切换站点】
2020/04/07 PHP
分享一款基于jQuery的视频播放插件
2014/10/09 Javascript
javascript上下方向键控制表格行选中并高亮显示的方法
2015/02/13 Javascript
函数window.open实现关闭所有的子窗口
2015/08/03 Javascript
Linux下为Node.js程序配置MySQL或Oracle数据库的方法
2016/03/19 Javascript
值得分享的bootstrap table实例
2016/09/22 Javascript
火狐和ie下获取javascript 获取event的方法(推荐)
2016/11/26 Javascript
IntersectionObserver API 详解篇
2016/12/11 Javascript
JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)
2017/07/07 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
2018/10/08 Javascript
js的对象与函数详解
2019/01/21 Javascript
微信小程序实现的五星评价功能示例
2019/04/25 Javascript
微信小程序按钮点击跳转页面详解
2019/05/06 Javascript
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
jQuery Raty星级评分插件使用方法实例分析
2019/11/25 jQuery
5分钟快速看懂ES6中的反射与代理
2019/12/19 Javascript
vue 验证两次输入的密码是否一致的方法示例
2020/09/29 Javascript
python代码制作configure文件示例
2014/07/28 Python
python中的计时器timeit的使用方法
2017/10/20 Python
Flask框架web开发之零基础入门
2018/12/10 Python
Python上下文管理器用法及实例解析
2019/11/11 Python
python 用 xlwings 库 生成图表的操作方法
2019/12/22 Python
Maison Lab荷兰:名牌Outlet购物
2018/08/10 全球购物
Hush Puppies澳大利亚官网:舒适的男女休闲和正装鞋
2019/08/24 全球购物
什么是Linux虚拟文件系统VFS
2012/01/31 面试题
运动会通讯稿200字
2014/02/16 职场文书
副护士长竞聘演讲稿
2014/04/30 职场文书
研究生简历自我评价范文
2014/09/13 职场文书
什么是SOLID
2022/03/24 Javascript
Win11开始菜单添加休眠选项
2022/04/19 数码科技