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

本文共 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

你可能感兴趣的文章
斗鱼爬虫,爬取颜值频道的主播图片和名字
查看>>
【Codeforces Round #439 (Div. 2) B】The Eternal Immortality
查看>>
【MemSQL Start[c]UP 3.0 - Round 1 B】 Lazy Security Guard
查看>>
【codeforces 499C】Crazy Town
查看>>
【Uva 12105】Bigger is Better
查看>>
【47.40%】【codeforces 743B】Chloe and the sequence
查看>>
好用的jq复制插件clipboard.js
查看>>
linux共享库,以及/etc/ld.so.conf文件的应用【转】
查看>>
Python 爬虫(1)基础知识和简单爬虫
查看>>
[经验] Unity3D 里怎么制作天空盒(skybox)
查看>>
ViewPager和View组合 实现页面的切换
查看>>
使用PagerSlidingTabStrip实现顶部导航栏
查看>>
调用摄像头和相册
查看>>
jQuery.事件对象
查看>>
CSS之属相相关
查看>>
整理了一下自己买过的计算机书
查看>>
解决py2exe error: MSVCP90.dll: No such file or directory
查看>>
java RSA实现私钥签名、公钥验签、私钥加密数据、公钥解密数据
查看>>
Erlang 练习题
查看>>
数据挖掘十大算法总结--核心思想,算法优缺点,应用领域
查看>>