首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

在下面的示例中,子类是否继承了它们的父类原型(JS)

在JavaScript中,子类是否继承了它们的父类原型取决于具体的继承方式。以下是常见的继承方式及其对父类原型的继承情况:

  1. 原型链继承:
    • 子类通过将父类的实例赋值给自己的原型来实现继承。
    • 子类会继承父类原型上的属性和方法。
    • 示例代码:
    • 示例代码:
    • 推荐的腾讯云相关产品和产品介绍链接地址:无
  • 构造函数继承:
    • 子类通过在自身的构造函数中调用父类的构造函数来实现继承。
    • 子类不会继承父类原型上的属性和方法。
    • 示例代码:
    • 示例代码:
    • 推荐的腾讯云相关产品和产品介绍链接地址:无
  • 组合继承:
    • 子类通过同时使用原型链继承和构造函数继承的方式实现继承。
    • 子类既继承了父类原型上的属性和方法,又继承了父类构造函数中的属性。
    • 示例代码:
    • 示例代码:
    • 推荐的腾讯云相关产品和产品介绍链接地址:无
  • 原型式继承:
    • 子类通过创建一个临时的构造函数,并将父类的实例作为该构造函数的原型来实现继承。
    • 子类会继承父类原型上的属性和方法。
    • 示例代码:
    • 示例代码:
    • 推荐的腾讯云相关产品和产品介绍链接地址:无
  • 寄生式继承:
    • 子类通过在原型式继承的基础上,对继承的对象进行扩展,从而实现继承。
    • 子类会继承父类原型上的属性和方法,并可以添加自己的属性和方法。
    • 示例代码:
    • 示例代码:
    • 推荐的腾讯云相关产品和产品介绍链接地址:无

综上所述,子类是否继承了它们的父类原型取决于具体的继承方式。不同的继承方式对父类原型的继承情况有所不同。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

你需要知道的 JavaScript 类(class)的这些知识

在Java或Swift等语言中使用的传统类作为创建对象的蓝图,在 JavaScript 中不存在,原型继承仅处理对象。 原型继承可以模拟经典类继承。...定义:类关键字 使用关键字class可以在 JS 中定义了一个类: class User { // 类的主体 } 上面的代码定义了一个User类。 大括号{}里面是类的主体。...在下面的示例中,构造函数设置字段name的初始值 class User { constructor(name) { this.name = name; } } User的构造函数有一个参数...当字段在构造函数中隐式创建时,就像前面的场景一样,可能获取所有字段。必须从构造函数的代码中破译它们。...类和原型 必须说 JS 中的类语法在从原型继承中抽象方面做得很好。但是,类是在原型继承的基础上构建的。每个类都是一个函数,并在作为构造函数调用时创建一个实例。 以下两个代码段是等价的。

71110

JS 原生方法原理探究(四):如何实现继承的几种方式?

这是JS 原生方法原理探究系列的第四篇文章。本文会介绍如何实现 JS 中常见的几种继承方式,同时简要它们的优缺点。 实现继承的方法 ?...Class extends 继承是 ES6 的,本质上是寄生组合式继承的一种运用 下面的示例中,SuperType 表示父类,SubType 表示继承父类的子类。...第一次是在子类构造函数中 call 调用父类构造函数,这个时候实际上已经使得子类实例拥有了父类的属性;第二次是 new 调用父类构造函数并作为子类的原型,这时候又使得子类原型上也有了父类的属性。...在具体实现中,我们不再像原型链继承或者组合继承那样,new 一个父类构造函数作为子类的原型 —— 虽然效果看起来一样,但这是一次多余的、应该避免的父类调用。...相反,我们借鉴了寄生式继承的做法,创建了一个父类原型的副本作为子类的原型。

1.5K20
  • js面试跳跳题二

    call() 方法来继承父类属性,通改变子类原型,让原型指向父类的实例,就可以共享父类的方法了 这种继承方式优点在于构造函数可以传参,不会与父类引用属性共享,可以复用父类的函数,但是也存在一个缺点 就是在继承父类函数的时候调用了父类构造函数...,导致子类的原型上多了不需要的父类属性,存在内存上的浪费。...==使用 extends== 表明继承自哪个父类,并且在子类构造函数中必须调用 super ,因为这段代码可以看成 Parent.call(this, value) 【重点】promise...中微任务与其他微任务的不同 Node.js还提供了另外两个与"任务队列"有关的方法:process.nextTick和setImmediate。...then中的第二个回调,如果then中没有写第二个回调,则进入catch js中浮点类型的计算 0.1 + 0.2 > 0.3 JS 采用 IEEE 754双精度版本 什么是链表,链表和数组有什么区别?

    17920

    前端-一篇文章理解 JS 继承

    如图所示,JS中继承可以按照是否使用object函数(在下文中会提到),将继承分成两部分(Object.create是ES5新增的方法,用来规范化这个函数)。...继承方式 上图上半区的原型链继承,构造函数继承,组合继承,网上内容比较多,本文不作详细描述,只指出重点。这里给出了我认为最容易理解的一篇《JS中的继承(上)》。...2.1 原型式继承 核心:将父类的实例作为子类的原型。...缺点: 1、父类的引用属性会被所有子类实例共享 2、子类构建实例时不能向父类传递参数 2.2 构造函数继承 核心:将父类构造函数的内容复制给了子类的构造函数。...不同点: 1、ES6继承中子类的构造函数的原型链指向父类的构造函数,ES5中使用的是构造函数复制,没有原型链指向。 2、ES6子类实例的构建,基于父类实例,ES5中不是。 3.

    82520

    JS继承有哪些,你能否手写其中一两种呢?3

    引言JS系列暂定 27 篇,从基础,到原型,到异步,到设计模式,到架构模式等,本篇是 JS系列中第 3 篇,文章主讲 JS 继承,包括原型链继承、构造函数继承、组合继承、寄生组合继承、原型式继承、 ES6...,让一个引用类型继承另一个引用类型的属性及方法优点:继承了父类的模板,又继承了父类的原型对象缺点:可以在子类构造函数中,为子类实例增加实例属性。...:解决了1中子类实例共享父类引用对象的问题,实现多继承,创建子类实例时,可以向父类传递参数缺点:实例并不是父类的实例,只是子类的实例只能继承父类的实例属性和方法,不能继承原型属性/方法无法实现函数复用,.../方法,不存在引用属性共享问题,可传参,可复用缺点:调用了两次父类构造函数,生成了两份实例(子类实例将子类原型上的那份屏蔽了)四....这也许比将其称之为继承更为贴切,因为“被继承”了的功能并没有被拷贝到正在“进行继承”的对象中,相反它仍存在于通用的对象中。

    41450

    JS继承有哪些,你能否手写其中一两种呢?

    引言 JS系列暂定 27 篇,从基础,到原型,到异步,到设计模式,到架构模式等, 本篇是 JS系列中第 3 篇,文章主讲 JS 继承,包括原型链继承、构造函数继承、组合继承、寄生组合继承、原型式继承、...,让一个引用类型继承另一个引用类型的属性及方法 优点: 继承了父类的模板,又继承了父类的原型对象 缺点: 可以在子类构造函数中,为子类实例增加实例属性。...运行子类构造函数,并在子类构造函数中运行父类构造函数,this绑定到子类 图片 优点: 解决了1中子类实例共享父类引用对象的问题,实现多继承,创建子类实例时,可以向父类传递参数 缺点: 实例并不是父类的实例.../方法,不存在引用属性共享问题,可传参,可复用 缺点: 调用了两次父类构造函数,生成了两份实例(子类实例将子类原型上的那份屏蔽了) 四....这也许比将其称之为继承更为贴切,因为“被继承”了的功能并没有被拷贝到正在“进行继承”的对象中,相反它仍存在于通用的对象中。

    40570

    已阅冴羽大佬文章

    ,封装,多态 继承,子类继承父类 封装,数据的权限和保密 多态,同一接口不同实现 // 继承 class People { constructor(name,age) { this.name...函数就是对象的一个子类型,JavaScript中的函数是“一等公民”,因为它们本质上和普通的对象一样,所以可以像操作其他对象一样操作函数。...[[Prototype]]原型链中 hasOwnProperty(...)只会检查属性是否在myObject对象中,不会检查[[Prototype]]链 枚举 示例: var myObject =...这个方法的任务就是 初始化实例需要的所有信息。 类的继承:在面向类的语言中,你可以先定义一个类,然后定义一个继承前者的类。后者通常被称为“子类”,前者通常被称为“父类”。...几乎所有的对象在创建时[[Prototype]]属性都会被赋予一个非空的值。 使用in操作符来检查属性在对象中是否存在时,同样会查找对象的整条原型链。

    94920

    ​JS基础-完美掌握继承知识点

    前言 上篇文章详细解析了原型、原型链的相关知识点,这篇文章讲的是和原型链有密切关联的继承,它是前端基础中很重要的一个知识点,它对于代码复用来说非常有用,本篇将详细解析JS中的各种继承方式和优缺点进行,希望看完本篇文章能够对继承以及相关概念理解的更为透彻...PS:或者是多个类 JS实现继承的原理 记住这个概念,你会发现JS中的继承都是在实现这个目的,差异是它们的实现方式不同。 复制父类的属性和方法来重写子类原型对象。...[不看后悔系列] 借用构造函数继承的优缺点 优点: 可以向父类传递参数 解决了原型链继承中:父类属性使用this声明的属性会在所有实例共享的问题。...通过this声明的属性/方法,在子类实例的属性上,和其原型上都复制了一份,原因在代码中也有注释: 原型链继承: 父类通过this和prototype声明的属性/方法继承至子类的prototype上。...组合继承的优缺点 优点: 完整继承(又不是不能用),解决了: 父类通过this声明属性/方法被子类实例共享的问题(原型链继承的问题) 每次实例化子类将重新初始化父类通过this声明的属性,实例根据原型链查找规则

    58920

    前端面试(2)javascript

    实现继承的主要方法: 1、原型链继承 核心: 将父类的实例作为子类的原型 优点:共享了父类构造函数的方法 缺点: 父类的引用类型值会被所有子类实例共享,但基本类型不会被共享。...(如 arr 属性) 只能继承父类的实例属性和方法,不能继承原型属性/方法(因为没有用到原型) 实例之间是独立的,每个子类都有父类实例函数的副本,无法实现复用,影响性能。...(原型链继承和构造函数继承的组合,兼具了二者的优点) 优点: 父类的方法可以被复用 父类的引用属性不会被共享 子类构建实例时可以向父类传递参数 缺点: 调用了两次父类的构造函数,第一次给子类的原型添加了父类的...name, arr 属性,第二次又给子类的构造函数添加了父类的 name, arr 属性,从而覆盖了子类原型中的同名参数。...ES6 继承中子类的构造函数的原型链指向父类的构造函数,ES5 中使用的是构造函数复制,没有原型链指向。 ES6 子类实例的构建,基于父类实例,ES5 中不是。

    1.3K20

    JavaScript原型链与继承

    __proto__); // 结果为null 通过上面的示例, 发现开始的一句话其实是错误的. JS的世界中只有一个对象没有原型对象,这个对象就是Object.prototype。...但是父类新增原型方法/原型属性,子类都能访问到,父类一变其它的都变了 2....构造函数继承 使用父类的构造函数来增强子类实例,等于是复制父类的实例属性给子类(没用到原型) function People(name,age){ this.name = name; this.age...,不能继承原型属性/方法,无法实现函数复用,每个子类都有父类实例函数的副本,影响性能 3....组合继承 就是将原型链继承和构造函数继承组合在一起;继承两个优点 通过调用父类构造,继承父类的属性并保留传参的优点, 然后再通过将父类实例作为子类原型,实现函数复用 function People(name

    1.6K50

    【JS 构造|原型|原型链|继承(圣杯模式)|ES6类语法】下篇

    文章目录 ✔️前言 内容 继承 伪经典模式/圣杯模式 类语法 总结 ✔️前言 ❗️ ❗️ ❗️本篇系将带来JavaScript中的构造——原型——原型链——继承——ES6类语法系列知识完整讲解。...只需要将原型链设置为下面的结构即可 上面实现仅需一句代码即可: Object.setPrototypeOf(VIPUser.prototype, User.prototype) 至此,完美的解决了之前提到的两处重复代码的问题...这和继承的联系 继承是面向对象的概念,它描述了两个对象类型(类,构造函数)之间的关系 如果在逻辑上可以描述为:A不一定是B,但B一定是A,则:B继承A、A派生B、A是B的父类、B是A的子类。...学过后端语言的朋友一定很清楚这是个什么玩意儿 子类的实例应该自动拥有父类的所有成员 JavaScript中,继承具有两个特性: 单根性:子类最多只有一个父类 传递性:间接父类的成员会传递到子类中...示例2主要是为了演示了ES6新的继承方式,注意关键字extends、super 总结 本篇系到此结束,希望各位都有所收获,如有文章有不当之处请在评论区交流,谢谢

    73110

    JS 继承的7种方法,你学会了吗?

    存在的问题 从上面的实现代码中,相信大家都能看出来,我有意的忽略了原型的操作,没有在父类构造函数的原型上添加方法,而这个就是这种方法存在的问题 Father.prototype.say = function...重新声明父类所定义的方法,无法复用。 三、组合继承 在前面两种方法中,都存在着一定的缺陷,所以很少会将它们单独使用。...Son.prototype = new Father() 在上面的代码中,通过盗用构造函数的方法继承了父类实例上的属性 a ,通过原型链的方式,继承了父类的原型对象 关于具体过程也只是两个的结合,可以翻翻前面的解释...实现方法 在组合继承的方法中我们 call 了一次,又 new 了一次,导致调用了2次父类,而在寄生式继承中,我们可以调用 API 来实现继承父类的原型 我们将两者结合在一起 不再采用 new 关键字来给改变原型...) } } 这样就实现了子类继承父类,这里的关键是需要在子类的 constructor 中添加一个 super 关键字 需要注意的是 子类中constructor方法中必须引用super方法,否则新建实例会报错

    36640

    JS 继承的7种方法,你学会了吗?

    存在的问题 从上面的实现代码中,相信大家都能看出来,我有意的忽略了原型的操作,没有在父类构造函数的原型上添加方法,而这个就是这种方法存在的问题 Father.prototype.say = function...重新声明父类所定义的方法,无法复用。 三、组合继承 在前面两种方法中,都存在着一定的缺陷,所以很少会将它们单独使用。...Son.prototype = new Father() 在上面的代码中,通过盗用构造函数的方法继承了父类实例上的属性 a ,通过原型链的方式,继承了父类的原型对象 关于具体过程也只是两个的结合,可以翻翻前面的解释...实现方法 在组合继承的方法中我们 call 了一次,又 new 了一次,导致调用了2次父类,而在寄生式继承中,我们可以调用 API 来实现继承父类的原型 我们将两者结合在一起 不再采用 new 关键字来给改变原型...) } } 这样就实现了子类继承父类,这里的关键是需要在子类的 constructor 中添加一个 super 关键字 需要注意的是 子类中constructor方法中必须引用super方法,否则新建实例会报错

    70230

    【精品转载】学习 Vue 源码的必要知识储备

    子类必须在 constructor 方法中调用 super 方法,否则新建实例时会报错。这是因为子类没有自己的 this 对象,而是继承父类的 this 对象,然后对其进行加工。...这是因为子类实例的构建,是基于对父类实例加工,只有 super 方法才能返回父类实例。...`super` 虽然代表了父类 `A` 的构造函数,但是返回的是子类 `B` 的实例,即` super` 内部的 `this ` 指的是 `B`,因此 `super()` 在这里相当于 A.prototype.constructor.call...(this) ES5 和 ES6 实现继承的区别 ES5 的继承,实质是先创造子类的实例对象 this,然后再将父类的方法添加到 this 上面( Parent.apply(this))。...ES6 的继承机制完全不同,实质是先创造父类的实例对象 this (所以必须先调用 super() 方法),然后再用子类的构造函数修改 this。

    69830

    JS入门难点解析12-继承的实现方式与优缺点

    下面我们详细介绍实现JS继承的两类四种方式和这几种方式的组合,以及他们各自的优缺点。 3. 模拟类的继承 正如第2节所述,JS的设计者为我们提供了一个最直接的思路。...1 注意: 将父类实例对象赋值给子类构造函数的prototype 属性以后,重写了子类原型对象,此时新的子类原型对象是没有属于自己的constructor属性的,而是继承了SuperType.protoType...缺点: 调用了两次父类构造函数,父类的实例属性被复制了两份,一份放在子类原型,一份放在子类实例,而且最后子类实例继承自父类的实例属性覆盖了子类原型继承自父类的实例属性。 4....委托继承 委托继承,并不需要使用者去调用构造函数。本质上其实是选一个原始对象作为其他对象的原型来继承,这样在其他对象中找不到的属性和方法,会委托该原始对象去寻找,也就实现了继承。...,而父类的原型属性被copy到了子类中,子类可以共享父类和子类原型定义的属性。

    1.3K40

    2022高频前端面试题合集之JavaScript篇(上)

    圣杯模式的继承解决了这一问题,其基本思路就是不通过调用父类构造函数来给子类原型赋值,而是取得父类原型的一个副本,然后将返回的新对象赋值给子类原型。...圣杯模式的继承解决了这一问题,其基本思路就是不通过调用父类构造函数来给子类原型赋值,而是取得父类原型的一个副本,然后将返回的新对象赋值给子类原型。...,我们在 inherit 方法中创建了一个中间层,之后让 F 的原型和父类的原型指向同一地址,再让子类的原型指向这个 F 的实例化对象来实现了继承。...借用构造函数继承 重点:用 call( ) 和 apply( ) 将父类构造函数引入子类函数(在子类函数中做了父类函数的自执行(复制)) 特点:    - 1、只继承了父类构造函数的属性,没有继承父类原型的属性...缺点:调用了两次父类构造函数(耗内存),子类的构造函数会代替原型上的那个父类构造函数。 寄生组合式继承(圣杯模式) 重点:修复了组合继承的问题 18.

    1.1K20

    JavaScript 类完整指南

    在 JavaScript 中不存在 Java 或 Swift 等语言中所使用的作为创建对象 蓝图的传统类,原型继承仅处理对象。 原型继承可以模仿经典类的继承。...继承:extends5.1 父构造函数:constructor() 中的 super()5.2 父实例:方法中的 super6. 对象类型检查:instanceof7. 类和原型8....总结 1.定义:class 关键字 用特殊关键字 class 在 JavaScript 中定义一个类: class User { // The body of class } 上面的代码定义了一个类...同样,ContentWriter 类声明一个新字段 posts。 注意,父类的私有成员不会被子类所继承。...类和原型 我必须说,JavaScript 中的类语法在从原型继承中进行抽象方面做得很好。为了描述 class 语法,我甚至没有使用术语原型。 但是这些类是建立在原型继承之上的。

    99920

    《JS原理学习 (2) 》深入理解原型链与继承

    在下个章节中,我们将解决引用类型被实例共享的问题 构造函数继承 我们在子类的构造函数中,可以使用call将父类构造函数的所有属性和方法拷贝到当前构造函数中,这样我们在实例化后,修改属性和方法就是修改的复制过来的内容了...,构造函数继承可以继承构造函数中的属性和方法,他们彼此互补,那么我们将它俩的长处结合起来,就实现了组合继承,也完美的弥补了它们各自的短板。...子类已经继承了父类构造函数中的属性与方法和原型对象上的属性与方法。...我们还可以直接将子类的原型对象通过__proto__属性将其指向父类的原型对象,这种方式没有改变子类的原型对象,所以子类原型对象上的constructor属性还是指向父类的构造函数。...我们前面讲的所有的继承方法,都没有实现构造函数上的静态方法继承,然而在ES6的class继承中,子类是可以继承父类的静态方法的。

    31430

    前端面试题 --- JS高阶和其他

    对象返回出去 es6和es5的继承(继承不用搞那么麻烦,项目中还是用 class) 原型链继承 父类的实例作为子类的原型,易于实现,父类的新增实例与属性子类都能访问,创建子类实例,不能向父类构造函数中传参数...原型链继承 实现: 父类的实例作为子类的原型 可以在子类中增加实例属性,如果要新增加原型属性和方法需要在new 父类构造函数的后面 优点: 简单,易实现 父类的新增实例与属性子类都能访问...(xiaoming.a) 构造函数继承(伪造对象、经典继承) 不能继承原型属性/方法,可以实现多继承,可以传参,无法复用, 构造函数继承 实现: 在子类内,使用call()调用父类方法,并将父类的...this修改为子类 的this.相当于是把父类的实例属性复制了一份放到子类的函数内....优点: 解决了子类构造函数向父类构造函数中传递参数 可以实现多继承(call或者apply多个父类) 缺点: 方法都在构造函数中定义,无法复用 不能继承原型属性/方法,只能继承父类的实例属性和方法

    67310
    领券