广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >javascript原型链中如何实现继承
  • 890
分享到

javascript原型链中如何实现继承

2024-04-02 19:04:59 890人浏览 安东尼
摘要

这篇文章将为大家详细讲解有关javascript原型链中如何实现继承,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:继承的几种方式:① 使用构造函数实现继承fun

这篇文章将为大家详细讲解有关javascript原型链中如何实现继承,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

具体如下:

继承的几种方式:

① 使用构造函数实现继承

function Parent(){
  this.name = 'parent';
}
function Child(){
Parent.call(this); //在子类函数体里面执行父类的构造函数
this.type = 'child';//子类自己的属性
}

Parent.call(this),this即实例,使用this执行Parent方法,那么就用this.name = 'parent'把属性

挂载在了this(实例)上面,以此实现了继承。

缺点:以上只是让Child得到了Parent上的属性,Parent的原型链上的属性并未被继承。

② 使用原型链实现继承

function Parent(){
  this.name = 'parent';
}
function Child(){
  this.type = 'child';
}
Child.prototype = new Parent();

解释:Child.prototype === Chlid实例的__proto__ === Child实例的原型

所以当我们引用new Child().name时,Child上没有,然后寻找Child的原型child.__proto__Child.prototypenew Parent(),Parent的实例上就有name属性,所以Child实例就在原型链上找到了name属性,以此实现了继承。

缺点:可以看出,Child的所有实例,它们的原型都是同一个,即Parent的实例:

var a = new Child();
var b = new Child();
a.__proto === b.__proto__; //true

所以,当使用 a.name = 'a'重新给name赋值时,b.name也变成了'a',反之亦然。

用instanceof和constructor都无法确认实例到底是Child的还是Parent的。

③ 结合前两种取长补短

function Parent(){
  this.name = 'parent';
}
function Child(){
  Parent.call(this);
  this.type = 'child';
}
Child.prototype = new Parent();

缺点:在Child()里面用Parent.call(this);执行了一次Parent(),然后又使用Child.prototype = new Parent()执行了一次Parent()。

改进1:

function Parent(){
  this.name = 'parent';
}
function Child(){
  Parent.call(this);
  this.type = 'child';
}
Child.prototype = Parent.prototype;

缺点:用instanceof和constructor都无法确认实例到底是Child的还是Parent的。

原因: Child.prototype = Parent.prototype直接从Parent.prototype里面拿到constructor,即Parent。

改进2:

function Parent(){
  this.name = 'parent';
}
function Child(){
  Parent.call(this);
  this.type = 'child';
}
Child.prototype = Object.create(Parent.prototype);
Child.prototype.constructor = Child;

画图说明吧:

var a = new Child();

javascript原型链中如何实现继承

所以这样写我们就构造出了原型链。

关于“javascript原型链中如何实现继承”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: javascript原型链中如何实现继承

本文链接: https://www.lsjlt.com/news/71481.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • javascript原型链中如何实现继承
    这篇文章将为大家详细讲解有关javascript原型链中如何实现继承,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体如下:继承的几种方式:① 使用构造函数实现继承fun...
    99+
    2022-10-19
  • JavaScript中怎么实现原型链和继承
    JavaScript中怎么实现原型链和继承,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。原型链例子(要点写在注释里,可以把代码复制到浏览器里测...
    99+
    2022-10-19
  • 怎么在javascript中实现原型链继承
    本篇文章给大家分享的是有关怎么在javascript中实现原型链继承,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、说明构造函数、原型与实例的关系,每个构造函数都有一个原型对...
    99+
    2023-06-15
  • JavaScript的继承和原型链是什么
    小编给大家分享一下JavaScript的继承和原型链是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、前言JavaScri...
    99+
    2022-10-19
  • javascript原型链继承的使用方法
    这篇文章主要讲解了“javascript原型链继承的使用方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript原型链继承的使用方法”吧!说明即使不自定义类型,也可以通过原型实...
    99+
    2023-06-20
  • JavaScript原型链及常见的继承方法
    目录原型链原型链的概念原型链的问题几种常见的继承方法盗用构造函数组合继承原型式继承寄生式继承寄生组合式继承原型链 原型链的概念 在JavaScript中,每一个构造函数都有一个原型,...
    99+
    2022-11-13
  • 如何分析Js继承与原型链
    今天就跟大家聊聊有关如何分析Js继承与原型链,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。继承与原型链当谈到继承时,JavaScript 只有一种结构:对象。每个实例对象(objec...
    99+
    2023-06-22
  • 原生Javascript如何实现继承
    这篇文章将为大家详细讲解有关原生Javascript如何实现继承,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言最近在复习javascript的一些基础知识,为开启新的征程做准备。所以开始记录一些自己学...
    99+
    2023-06-20
  • JS中原型链和利用原型实现继承的示例分析
    小编给大家分享一下JS中原型链和利用原型实现继承的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!原型链原型链是一种关系,实例对象和原型对象之间的关系,关系是通过原型(__proto...
    99+
    2022-10-19
  • JavaScript原型链继承的概念以及原理分享
    本篇文章和大家了解一下JavaScript原型链继承的概念以及原理分享。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。一、原型链所谓原型链就是指通过原型链继承,在原型之间建立起来的链式结构被称为原型链。当查找对象的某个属性...
    99+
    2023-06-14
  • JavaScript原型与继承实例分析
    今天小编给大家分享一下JavaScript原型与继承实例分析的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先我们需要知道的...
    99+
    2023-06-27
  • 一文详解如何用原型链的方式实现JS继承
    目录原型链是什么通过构造函数创建实例对象用原型链的方式实现继承方法1:Object.create方法2:直接修改 [[prototype]]方法3:使用父类的实例总结今天讲一道经典的...
    99+
    2022-11-13
  • Javascript中类式继承和原型式继承有什么区别
    这篇文章主要介绍了Javascript中类式继承和原型式继承有什么区别,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。在所有面向对象的编程中,...
    99+
    2022-10-19
  • JavaScript如何实现继承的
    JavaScript是一种面向对象的语言,而继承是面向对象编程的一个重要特性。在JavaScript中,继承的实现方式有多种,本文将介绍其中较为常见的几种方法。一、原型链继承原型链继承是JavaScript中最基本的一种继承方式,也是最常用...
    99+
    2023-05-14
  • Javascript中怎么实现原型和原型链
    今天就跟大家聊聊有关Javascript中怎么实现原型和原型链,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。原型Javascript中有一句话,叫一...
    99+
    2022-10-19
  • javascript是如何实现继承的
    本篇内容介绍了“javascript是如何实现继承的”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • 如何利用JavaScript 实现继承
    目录一、背景简介二、原型对象和对象的关系二、使用 prototype 和 proto 实现继承三、使用prototype和proto实现继承四、通过原型链访问对象的方法和属性五、其他...
    99+
    2022-11-13
  • javascript中怎么实现继承
    今天就跟大家聊聊有关javascript中怎么实现继承,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。对象冒充(多继承):a. 代码:function...
    99+
    2022-10-19
  • javascript原型链怎么实现
    这篇文章主要讲解了“javascript原型链怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“javascript原型链怎么实现”吧!原型链在ES6中引入了class关键字,但是JS依...
    99+
    2023-06-22
  • JavaScript面向对象编程中的原型继承实例用法
    这篇文章主要介绍“JavaScript面向对象编程中的原型继承实例用法”,在日常操作中,相信很多人在JavaScript面向对象编程中的原型继承实例用法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作