web前端tips:js继承——寄生式继承

news2024/11/26 12:52:59

输入图片描述

上篇文章给大家分享了 js继承中的 原型式继承

web前端tips:js继承——原型式继承

今天给大家分享一下 js 继承中的 寄生式继承

寄生式继承

寄生式继承(Parasitic Inheritance)是一种基于原型式的继承方式,它通过创建一个仅用于封装继承过程的函数,该函数在内部调用原型式继承创建一个对象,然后增强该对象,最后返回这个对象。

基本步骤:

  1. 创建一个用于封装继承过程的函数,我们称之为"寄生函数"。
  2. 在寄生函数内部,通过某种方式创建一个新对象,这个新对象将作为继承对象。
  3. 在寄生函数内部,可以为新对象添加需要继承的属性和方法。
  4. 最后,返回这个新对象作为继承结果
// 1 寄生式继承函数
function createChild(parent) {
  // 2 通过原型式继承创建一个新对象
  var child = Object.create(parent);
  // 3 增强新对象
  child.sayGoodBye = function() {
    console.log('GoodBye: ' + this.name)
  }
  // 4
  return child
}

var parent = {
  name: "Parent",
  sayHello: function() {
    console.log("Hello, " + this.name + "!");
  }
};

// 使用寄生式继承创建子对象
var child = createChild(parent)
child.name = 'John'

child.sayHello(); // Hello, John!
child.sayGoodBye(); // Goodbye, John

通过这种方式,子对象child可以继承父对象Parent的属性和方法,并且还可以增加自己的方法。

需要注意的是,寄生式继承与原型式继承类似,子对象通过继承来创建,但是可以在创建过程中添加额外的属性和方法。

优点

  • 简单易懂:寄生式继承相对于其他继承方式来说,非常简单易懂,不需要理解过多的继承机制和语法。
  • 灵活性:寄生式继承允许在继承过程中增加额外的功能,可以在新对象中添加新的属性和方法,或者对已有的属性和方法进行修改和增强,从而满足特定的需求。
  • 可复用性:可以基于已有对象创建新对象,并对新对象进行修改,从而实现代码的复用。

缺点

  • 对象间关系复杂:同时使用原型式继承和寄生式继承时,对象间的继承关系可能变得复杂难以理解,维护和调试时可能会增加困难。
  • 内存消耗较大:寄生式继承在创建新对象时,需要为每个对象都创建一个新的副本,这会占用较多的内存空间,特别是在需要创建大量对象时可能会导致性能问题。
  • 对象识别困难:在寄生式继承中,新创建的对象与原型对象之间的关系并不直观,可能会导致一些难以追踪的问题,如对象属性的重复定义或覆盖等。

总的来说,虽然寄生式继承具有一定的灵活性和可用性,但由于上述缺点的存在,它并不是一个被广泛使用的继承方式。在实际开发中,需要权衡其优缺点,根据具体情况选择合适的继承方式。

结语

牵手 持续为你分享各类知识和软件 ,欢迎访问、关注、讨论 并留下你的小心心❤

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1048216.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电气专业发展到头了?

今日话题 电气专业发展到头了? 电气绝对不是末路专业。但是有个前提,不要选错行业。大土木类的,不管是设计还是施工,都不要选择。 二、电网公司。电网是绕不开的话题,早些年电网待遇太好,搞得大家都理所…

最优化问题简介

最优化问题(也称优化问题)泛指定量决策问题,主要关心如何对有限 资源进行有效分配和控制,并达到某种意义上的最优.它通常需要对需求进 行定性和定量分析,建立恰当的数学模型来描述该问题,设计合…

SI3262:国产NFC+MCU+防水触摸按键三合一SoC芯片

目录 SI3262简介特点结构框图芯片特性 SI3262简介 Si3262是高度集成ACD低功耗MCUNFC15通道防水触摸按键的SoC芯片。 其MCU模块具有低功耗、Low Pin Count、宽电压工作范围,集成了13/14/15/16位精度的ADC、LVD、UART、SPI、I2C、TIMER、WUP、IWDG、RTC、TSC等丰富的…

WebGL雾化

目录 前言 如何实现雾化 线性雾化公式 雾化因子关系图 根据雾化因子计算片元颜色公式 示例程序(Fog.js) 代码详解​编辑 详解如何计算雾化因子(clamp()) 详解如何计算最终片元颜色(根据雾化因子计算片元颜色…

KongA 任意用户登录漏洞分析

KongA 简介 KongA 介绍 KongA 是 Kong 的一个 GUI 工具。GitHub 地址是 https://github.com/pantsel/konga 。 KongA 概述 KongA 带来的一个最大的便利就是可以很好地通过UI观察到现在 Kong 的所有的配置,并且可以对于管理 Kong 节点 漏洞成因 未设置TOKEN_SECRE…

智能报修系统哪家好?有什么扫码一键报修的软件?

这是一套to b系统,专门为企事业单位提供日常的故障报修服务,单位员工遇到任何故障可扫码提交到平台上,再由平台根据技术维修员的擅长方向派单至技术维修员手中,全程可以跟踪报修的进度,每月可以导出维修记录&#xff0…

QT编译报错stdlib.h:No such file or directory

如图,需要将第19行,INCLUDEPATH /usr/include 注释掉 原因分析: 在Ubuntu的CSTDLIB中,使用的是#include_next下“stdlib.h” ,自行增加/usr/include 把include_next的顺序打乱,造成编译错误。但是在cento…

Qt 画自定义饼图统计的例子

先给出结果图,这个例子是将各种事件分类然后统计的其比例,然后画饼图显示出来 这个是我仿照官方给的例子,让后自己理解后,修改的,要生成饼图,需要QT的 charts 支持,安装QT 没有选择这个的&#…

RDMA Shared Receive Queue(四)

参考知乎文章《RDMA之Shared Receive Queue》:https://zhuanlan.zhihu.com/p/279904125 SRQ SRQ全称为Shared Receive Queue,即共享接受队列。在QP中,SQ用于下发SEND/WRITE/READ等操作,而RQ只用于下发RECV操作,对于本…

Bytebase x Hacktoberfest 2023 黑客啤酒节开源挑战邀请

🎃十月就要到了,年度开源庆典 Hacktoberfest 即将启动!今年,Bytebase 再次加入 Hacktoberfest,欢迎大家一起参加🍺 Hacktoberfest 是什么 Hacktoberfest Hacker 黑客 Oktoberfest 啤酒节,每…

远程访问:让您随时与电脑保持连接

远程访问可以带来什么? ​如今,我们的大部分工作都是在电脑的帮助下完成的。但是,我们并不总是坐在工作电脑前,随身携带电脑也很不方便,尤其是当工作设备是台式电脑而不是笔记本电脑时。那么,当我们不在…

【EI会议征稿】2023年第二届信号处理、计算机网络与通信国际学术会议(SPCNC2023)

2023年第二届信号处理、计算机网络与通信国际学术会议(SPCNC2023) The 2nd International Conference on Signal Processing, Computer Networks and Communications 2023年第二届信号处理、计算机网络与通信国际学术会议(SPCNC2023&#x…

纷享销客蝉联2023「Cloud100 China 」榜单,综合实力再获认可

近日,2023Cloud 100 China榜单正式发布,榜单由靖亚资本与崔牛会联合推出,纷享销客凭借着过硬的综合实力与卓越的技术创新能力,再次荣登榜单。 【Cloud 100 China】榜单旨在关注中国最具潜力的Cloud公司,上榜的 100 家企…

无需公网IP,实现公网SSH远程登录MacOS【内网穿透】

目录 前言 1. macOS打开远程登录 2. 局域网内测试ssh远程 3. 公网ssh远程连接macOS 3.1 macOS安装配置cpolar 3.2 获取ssh隧道公网地址 3.3 测试公网ssh远程连接macOS 4. 配置公网固定TCP地址 4.1 保留一个固定TCP端口地址 4.2 配置固定TCP端口地址 5. 使用固定TCP端…

AutoDL初体验

AutoDL初体验 真的很给力! 相同的配置,在华为云上价格令人望而却步,AutoDL真的良心价! 搞了个4090体验一下,一小时只要两块五(主要是,之前没有GPU,好多想玩的LLM开源项目都体验不了&…

数字人直播系统开发哪家好?

随着互联网技术的不断发展,直播行业已经成为了一个炙手可热的领域。数字人直播系统作为直播行业的一种新型应用,通过虚拟形象与真人克隆的结合,为用户提供了一种全新的互动体验。那么,在众多开发公司中,哪家公司的数字…

jquery和jquery-ui拖动元素(vue2)

彩色小方块可以任意拖动&#xff0c;红色箭头指向的区域可以拖动 CDN在index.html文件中引入 <link rel"stylesheet" href"//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"><script src"https://code.jquery.com/jquery-3.6.0.min…

水利感知信息系统方案浅析

传统水利感知信息主要包括雨水工情信息&#xff0c;通常是利用信息监测技术、通信技术、网络技术、计算机技术&#xff0c;建立由雨量站、水位站、流量站等组成的雨水工情遥测系统&#xff0c;实现对流域、河流、湖泊、水库、水电站和灌区的固定或移动站点的降水量、水位、流量…

差值结构表达的吸引能

( A, B )---3*30*2---( 1, 0 )( 0, 1 ) 让网络的输入只有3个节点&#xff0c;AB训练集各由5张二值化的图片组成&#xff0c;让A 中有5个点&#xff0c;B中有1个点&#xff0c;并且重合&#xff0c;统计迭代次数并排序。 其中有6组数据 差值结构 迭代次数 L1 L2 L1 E1 L2…

C函数学习总结

一.内存拷贝函数 void* memcpy(voidr* s1,const void* s2,size_t n); 该函数返回拷贝后的指针。比如说&#xff0c;它可以将一个字符数组缓冲区的内容拷贝到另一个缓冲区中, size_t n可以使用sizeof进行得到。 memmove(void *s1,const void* s2,size_t n); 如果目标区域和源区…