资讯专栏INFORMATION COLUMN

JS中的类与类的继承

Tangpj / 3280人阅读

摘要:首先捋清楚类和对象的关系类比如人类,指的是一个范围对象比如某个人,指的是这个范围中具体的对象中的作为构造函数时,就是一个类,通过操作符,可以返回一个对象。

JS中的类与类的继承

我们知道,JS中没有类或接口的概念,即不能直接定义抽象的类,也不能直接实现继承。不过,为了编程的方便,我们可以在 JS 中模拟类和继承的行为。
首先捋清楚类和对象的关系:

    类:比如人类,指的是一个范围; 对象:比如某个人,指的是这个范围中具体的对象

js中的function作为构造函数时,就是一个类,通过new操作符,可以返回一个对象。

类的声明:

第一种:传统构造函数声明
function Animal(){
            this.name = "tiger" 
        }
第二种:ES6中的class声明
class Animal{
    constructor(){
        this.name = "tiger"
    }
}
生成实例:

虽然类的声明有多种方式不尽相同,但是类生成实例相同

new Animal, new Animal2 // 没有参数时候 ()可以省略

类的继承的2种方式(主要说明es5传统构造函数的方式):

第一种:借助构造函数实现继承
原理

子类继承父类,通过call/apply改变父类构造函数的this指向

缺点

只实现了部分继承,仅继承了父类的属性,并没有继承父类的原型对象上<原型链上>的方法

第二种:借助原型链实现继承
原理

通过继承__proto__实现原型链继承:

1 在当前Child2实例上查找dance方法
2 发现没有 就会去 proto 上面去找dance方法
3 Child2实例的 proto === Parent2实例
4 去Parent2实例上查找dance方法 发现没有
5 去Parent2实例的 proto 查找dance方法
6 找到。

缺点

如果实例两个对象 改变其中一个对象的属性/方法 另一个对象也会跟着改变(因为改变的是原型链)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/98209.html

相关文章

  • java学习(三) —— 面对对象

    摘要:前言是面对对象的语言,因此有必要单独纪录下对象的各种定义和理解。面对对象基本概述概述是基于面向过程的变成思想,是对面向过程的一种封装。面对对象开发就是不断的创建对象,使用对象,指挥对象做事情。面对对象设计其实就是在管理和维护对象之间的关系。 前言 java是面对对象的语言,因此有必要单独纪录下对象的各种定义和理解。 面对对象,主要包括:面向对象思想,类与对象及其使用,对象的内存图,成...

    褰辩话 评论0 收藏0
  • 设计模式之软件设计七大原则

    摘要:引申意义子类可以扩展父类的功能,但不能改变父类原有的功能。含义当子类的方法实现父类的方法时重写重载或实现抽象方法,方法的后置条件即方法的输出返回值要比父类更严格或相等。优点约束继承泛滥,开闭原则的一种体现。降低需求变更时引入的风险。 0x01.开闭原则 定义:一个软件实体如类,模块和函数应该对扩展开放,对修改关闭 要点: 当变更发生时,不要直接修改类,而是通过继承扩展的方式完成变...

    ixlei 评论0 收藏0
  • php面向对象详解

    摘要:前言自从进入版本以来,开始全面地支持面向对象编程。好了,进入正题,面向对象的三大特性分别是封装性,继承性以及多态性,使用面向对象开发,让我们的程序可维护以及扩展性大大提高。 showImg(https://segmentfault.com/img/remote/1460000012257579?w=1920&h=1080); 前言 自从php进入5.0版本以来,PHP开始全面地支持面向...

    xingpingz 评论0 收藏0
  • JS与类继承

    摘要:构造类以及继承构造函数方法该种方式下的继承封装一个函数绑定复制继承对象创建方法类的实现该种方式下的继承极简主义法实现一个类睡觉睡觉类的私有属性和方法在方法中,只要不是定义在对象上的方法和属性,都是私有的该变量只能通过公有方法来读取类的数据共 构造类以及继承 构造函数方法 function Person(name) { this.name = name } Person.pro...

    shixinzhang 评论0 收藏0
  • Java 面向对象

    摘要:自从转到前段,差不多有一年时间没有动了,今天老弟问我关于的面向对象,自己不敢直接回答了,也许自己真的应该去做相关的考究了。要有父类引用指向子类对象。外部类要访问内部类的成员,必须要建立内部类的对象。 自从转到前段,差不多有一年时间没有动Java了,今天老弟问我关于Java的面向对象,自己不敢直接回答了,也许自己真的应该去做相关的考究了。然后在告诉他吧,记在这里当做一个笔记吧。  什么...

    cncoder 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<