博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
js继承
阅读量:5952 次
发布时间:2019-06-19

本文共 1190 字,大约阅读时间需要 3 分钟。

js继承

一、总结

1、js继承:和c++,java不一样,是通过对象冒充, 原型链,混合模式来实现的

2、基础打牢:基础打牢,后面就很轻松

 

二、js继承

继承继承的相关概念

  • 这里的继承和我们现实生活的中儿子继承父亲财产的这种关系虽然有相似的地方,但本质其实不一样;
  • 举一个简单的例子理解继承的含义:
    • 猴子--会法术的猴子--孙悟空;
    • 会法术的猴子和猴子是我们这里所说的继承关系;
    • 会法术的猴子是猴子的一种,即猴子是会法术的猴子的类型;
    • 孙悟空是会法术的猴子的一个实例,即会法术的猴子是孙悟空的类;
    • 孙悟空即使会法术的猴子的一种,也是猴子的一种,这种关系就和我们接下来要讲的继承是一个道理;
    • 在程序里我们将猴子叫做父类(超类,基类),会法术的猴子是他的子类(子类型,派生类),会法术的猴子继承了猴子的所有特征;
    • 会法术的猴子是孙悟空的类;孙悟空是会法术的猴子的实例;
  • 一旦确定了两个类的继承关系,就包含以以三个意思:
    1. 子类的实例可以共享父类的方法
    2. 子类可以覆盖或扩展父类的方法
    3. 子类和父类都是子类实例的类型

继承的实现

实现继承的方式不止一种。这是因为 JavaScript 中的继承机制并不是明确规定的,而是通过模仿实现的。所以大家看参考书的时候会发现很多种实现继承的方式,这里我们介绍最常用的几种。

    1. 对象冒充(构造函数绑定):

      原理如下:使用对象冒充(call或apply方法)(实质上是改变了this指针的指向继承基类

    2. 原型链

      这种方法更常见,使用prototype属性。

      • prototype 对象是个模板,要实例化的对象都以这个模板为基础。总而言之,prototype 对象的任何属性和方法都被传递给那个类的所有实例。原型链利用这种功能来实现继承机制。
      • 原型链的弊端是不支持多重继承。记住,原型链会用另一类型的对象重写类的 prototype 属性。
      • 子类的所有属性和方法都必须出现在 prototype 属性被赋值后,因为在它之前赋值的所有方法都会被删除。因为 prototype 属性被替换成了新对象,添加了新方法的原始对象将被销毁。
    3. 混合方式

      我们曾经讲解过创建类的最好方式是用构造函数定义属性,用原型定义方法。这种方式同样适用于继承机制,用对象冒充继承构造函数的属性,用原型链继承 prototype 对象的方法。

 

三、代码

2-10

1  2  3  4   
5 课堂演示 6 7 8 52 53

1、对象冒充实现js继承:支持多重继承:具体实现: Monkey.call(this,_type,_home)

2、原型链实现js接触:不支持js:具体实现:Magicmonkey.prototype=new Monkey();

 

转载于:https://www.cnblogs.com/Renyi-Fan/p/8997003.html

你可能感兴趣的文章
struts2使用json需要注意的问题
查看>>
gitlab runner 优化
查看>>
快速添加百度网盘文件到Aria2 猴油脚本
查看>>
mac 无法登录mysql的解决办法
查看>>
Shiro权限判断异常之命名导致的subject.isPermitted 异常
查看>>
Hello world travels in cpp - 字符串(2)
查看>>
struts2自定义拦截器
查看>>
Eclipse安装adt插件后之后看不到andorid manger
查看>>
Kafka服务端脚本详解(1)一topics
查看>>
Zookeeper 集群安装配置,超详细,速度收藏!
查看>>
js中var self=this的解释
查看>>
js--字符串reverse
查看>>
面试题
查看>>
Facebook 接入之获取各个配置参数
查看>>
android ant Compile failed; see the compiler error
查看>>
项目经理笔记一
查看>>
计算机字符编码从0/1到UTF-8
查看>>
[原]Jenkins(三)---Jenkins初始配置和插件配置
查看>>
Cache Plugin 实现过程
查看>>
HBase Compaction详解
查看>>