JavaScript高级:原型与原型链继承方式
在 JavaScript 中,继承是一种重要的概念,它使得对象可以从其他对象继承属性和方法,实现代码的重用和扩展。原型与原型链是 JavaScript 中实现继承的核心机制,虽然听起来有些高深,但我们可以通过通俗易懂的方式来理解它。本文将深入探讨原型与原型链的继承方式,帮助你更好地掌握 JavaScript 中的继承机制。
1. 原型继承的概念
原型继承是一种对象间的继承方式,每个对象都有一个关联的原型对象。通过继承,一个对象可以共享其原型对象的属性和方法。
2. 使用构造函数实现继承
构造函数实现继承是通过创建一个新的构造函数,并在其中调用父构造函数来实现继承。但这种方式无法继承父构造函数原型上的方法。
function Animal(name) {this.name = name;
}function Dog(name, breed) {Animal.call(this, name);this.breed = breed;
}const myDog = new Dog('Buddy', 'Golden Retriever');
console.log(myDog.name); // 输出:Buddy
console.log(myDog.breed); // 输出:Golden Retriever
3. 原型链继承的概念
原型链继承是通过将一个构造函数的原型对象链接到另一个构造函数的原型上,从而实现继承。这样,一个对象可以通过原型链访问到另一个构造函数原型上的属性和方法。
function Person(name) {this.name = name;
}Person.prototype.sayHello = function() {console.log(`Hello, my name is ${this.name}!`);
};function Student(name, school) {this.name = name;this.school = school;
}Student.prototype = Object.create(Person.prototype);const student = new Student('Bob', 'XYZ School');
student.sayHello(); // 输出:Hello, my name is Bob!
4. 组合继承的综合方式
组合继承是结合构造函数继承和原型链继承的方式,它能够继承父构造函数的属性,同时也能够继承父构造函数原型上的方法。
function Animal(name) {this.name = name;
}Animal.prototype.eat = function() {console.log(`${this.name} is eating.`);
};function Dog(name, breed) {Animal.call(this, name);this.breed = breed;
}Dog.prototype = Object.create(Animal.prototype);
Dog.prototype.constructor = Dog;const myDog = new Dog('Buddy', 'Golden Retriever');
myDog.eat(); // 输出:Buddy is eating.
原型与原型链是 JavaScript 中实现继承的重要机制,通过它们,我们可以实现对象间的属性和方法的共享,实现高效的代码复用。构造函数继承、原型链继承和组合继承是实现继承的常用方式,每种方式都有其优缺点。理解这些继承方式,将使你在 JavaScript 编程中更具灵活性和创造力。无论你是刚刚入门还是有一定经验的开发者,通过深入学习和实践,你都将能够更自信地应用继承的概念,创造出令人惊叹的应用!
相关文章:
JavaScript高级:原型与原型链继承方式
在 JavaScript 中,继承是一种重要的概念,它使得对象可以从其他对象继承属性和方法,实现代码的重用和扩展。原型与原型链是 JavaScript 中实现继承的核心机制,虽然听起来有些高深,但我们可以通过通俗易懂的方式来理解它…...
使用vue-grid-layout时 You may need an appropriate loader to handle this file type.
使用vue-grid-layout时 You may need an appropriate loader to handle this file type. node版本不匹配 我的node v14.16.0 vue-gride-layout 需要用 v 2.3.7的版本 卸载后重新安装即可...
C# 2048小游戏核心算法
文章目录 01.程序结构划分02.去零03.合并04.上移05.下移/左移/右移,只是取数据的方向不同06.提高可读性 01.程序结构划分 02.去零 有序向量“唯一化”的思路。 /// <summary>/// 去零/// </summary>/// <param name"row">对于一行或一…...
设计模式(5)代理模式
一、介绍: 【Subject/抽象角色】定义了RealSubject和Proxy的共用接口,这样就可以在任何使用RealSubject的地方都可以使用Proxy 【RealSubject/真实角色】定义Proxy所代表的真实实体 【Proxy/代理角色】保存一个引用使得代理可以访问实体,并…...
Django配置(部署环境较乱,暂时启用)
django配置 web服务器中部署项目及WSGI简介 web服务器 WSGI 在IIS中部署django项目 安装 wfastcgi :pip install wfastcgi安装IIS: 以上选择项勾选后确定 将CGI文件复制到项目中, 将项目复制到IIS默认目录中 部署IIS 添加变量信息如下…...
【设计模式】桥接模式
桥接(Bridge)是用于把抽象化与实现化解耦,使得二者可以独立变化。这种类型的设计模式属于结构型模式,它通过提供抽象化和实现化之间的桥接结构,来实现二者的解耦。 这种模式涉及到一个作为桥接的接口,使得…...
ol问题总结二
一、加载坐标系是4326格式的,使用wfsServer发布的服务,图层加载失败;坐标系是3857格式的。图层加载正常 原因:4326格式的,发布出来的,经纬度是颠倒的 解决方案一:将经纬度进行反转 <templa…...
批量打印-----jsPDF将图片转为pdf,并合并pdf
安装依赖并引入 import jsPDF from jspdf; import { PDFDocument, } from pdf-lib;注意一、 使用jspdf将图片(jpg/jpeg/png/bmp)转pdf(记为pdfA),得到的pdf(pdfA)和需要合并的pdf(记为pdfB)类…...
【Git】版本控制器详解之git的概念和基本使用
版本控制器git 初始Gitgit的安装git的基本使用初始化本地仓库配置本地仓库三区协作添加---add修改文件--status|diff版本回退--reset撤销修改删除文件 初始Git 为了能够更⽅便我们管理不同版本的⽂件,便有了版本控制器。所谓的版本控制器,就是⼀个可以记…...
C语言 棱形图案
目录 一、问题分析 上部分: 下部分: 二、代码演示 一、问题分析 如上图所示,我们可以将棱形进行拆解,分为上下两个部分。 上部分: 通过观察,我们得到 单边空格数 上半部分总行数 - 行数 - 1 …...
在idea使用GitHub账号、Copilot异常
登录GitHub显示这样的信息: Invalid authentication data.Connection refused: connect Failed to initiate the GitHub login process. Please try again. 修改hosts(C:\Windows\System32\drivers\etc\hosts),添加以下参数即可…...
面试热题(反转字符串中的单词)
给你一个字符串 s ,请你反转字符串中 单词 的顺序。 单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。 返回 单词 顺序颠倒且 单词 之间用单个空格连接的结果字符串。 注意:输入字符串 s中可能会存在前导空格、尾随空格…...
Stable Diffusion WebUI 从零基础到入门
本文主要介绍Stable Diffusion WebUI的实际操作方法,涵盖prompt推导、lora模型、vae模型和controlNet应用等内容,并给出了可操作的文生图、图生图实战示例。适合对Stable Diffusion感兴趣,但又对Stable Diffusion WebUI使用感到困惑的同学&am…...
【uniapp】一文读懂app端安装包升级
一、前言 首先,在app端开发上线的过程中,会面临一个问题,就是关于app端的版本升级的问题。如果不做相关处理来引导用户的话,那么app就会出现版本没有更新出现的各种问题,我们常见的有在线升级和去指定地址下载安装两种…...
【算法题】2518. 好分区的数目
题目: 给你一个正整数数组 nums 和一个整数 k 。 分区 的定义是:将数组划分成两个有序的 组 ,并满足每个元素 恰好 存在于 某一个 组中。如果分区中每个组的元素和都大于等于 k ,则认为分区是一个好分区。 返回 不同 的好分区的…...
编写守护进程
守护进程是一个后台进程,当操作系统启动时就可以运行的进程,当操作系统结束时结束的进程,与终端无关。 结果 不想要了就杀死...
stable-diffusion-webui启动No Python at ‘C:\xxx\xxx\python.exe‘
打开webui.bat 把 if not defined VENV_DIR (set "VENV_DIR%~dp0%venv") 中的%~dp0venv改成自己python的安装路径就行获取直接set值即可 如 set VENV_DIRD:\Users\xxx\AppData\Local\Programs\Python\Python310 另外就是直接运行webui-user.bat也可以 如果运行…...
面试热题(合并两个有序列表)
将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 合并链表这类型题也是比较经典的题了,因为链表是由指针相互指向而确定位置,所以我们只需要改变某些节点的指针便可以做到对链表进行排序 今天这个方法…...
QT生成Word PDF文档
需求:将软件处理的结果保存为一个报告文档,文档中包含表格、图片、文字,格式为word的.doc和.pdf。生成word是为了便于用户编辑。 开发环境:qt4.8.4vs2010 在qt的官网上对于pdf的操作介绍如下:http://qt-project.org/…...
阿里云服务器搭建WordPress建站教程基于Windows系统
本教程是使用阿里云服务器镜像系统选择的是Windows操作系统,手动安装WordPress博客网站全过程。本教程介绍如何在Windows操作系统的ECS实例上搭建WordPress网站。 目录 准备工作 搭建WordPress网站 解析WordPress网站域名 准备工作 创建Windows操作系统的ECS实…...
从CTF靶场到实战:手把手教你用Fenjing和SSTImap自动化检测Jinja2模板注入漏洞
从CTF靶场到实战:手把手教你用Fenjing和SSTImap自动化检测Jinja2模板注入漏洞 在渗透测试和CTF竞赛中,模板注入漏洞(SSTI)正成为越来越常见的攻击面。特别是使用Jinja2模板引擎的Web应用,由于开发人员对用户输入过滤不…...
别再只用connectWifi了!微信小程序连接Wi-Fi的完整避坑指南(附getConnectedWifi实战代码)
微信小程序Wi-Fi连接全链路实战:从API陷阱到高可靠解决方案 每次看到connectWifi返回success却无法上网,或是onWifiConnected回调永远空数据时,作为开发者的你是否想砸键盘?微信小程序Wi-Fi模块的API设计就像个布满暗礁的航道——…...
千问3.5-9B人工智能导论:用模型讲解机器学习与深度学习核心概念
千问3.5-9B人工智能导论:用模型讲解机器学习与深度学习核心概念 1. 当AI成为你的知识导师 想象一下,你面前坐着一位既懂技术又擅长教学的AI导师。它不仅掌握最前沿的人工智能知识,还能用生活中的例子帮你理解复杂概念。这就是千问3.5-9B作为…...
ROS2手眼标定实战:从二维平面到三维空间的坐标对齐
1. 手眼标定基础概念与ROS2环境搭建 手眼标定是机器人视觉引导系统中的关键环节,简单来说就是让机器人"知道"眼睛看到的东西在哪里。想象一下你闭着眼睛摸桌上的水杯,如果不知道手和眼睛的相对位置关系,很容易把杯子打翻。在工业场…...
PvZ Toolkit:植物大战僵尸PC版终极修改工具完全指南
PvZ Toolkit:植物大战僵尸PC版终极修改工具完全指南 【免费下载链接】pvztoolkit 植物大战僵尸 PC 版综合修改器 项目地址: https://gitcode.com/gh_mirrors/pv/pvztoolkit PvZ Toolkit是一款专为植物大战僵尸一代PC版设计的开源综合修改工具,为玩…...
FlowPilot完整指南:如何为您的车辆添加开源自动驾驶能力
FlowPilot完整指南:如何为您的车辆添加开源自动驾驶能力 【免费下载链接】flowpilot flow-pilot is an openpilot based driver assistance system that runs on linux, windows and android powered machines. 项目地址: https://gitcode.com/gh_mirrors/fl/flow…...
【图像增强】基于matlab HSI和局部同态滤波的彩色图像增强【含Matlab源码 15314期】
💥💥💥💥💥💥💞💞💞💞💞💞💞💞欢迎来到海神之光博客之家💞💞💞Ὁ…...
大模型Agent真正可用的临界点到了吗?——2026奇点大会Function Calling落地成熟度评估矩阵(含6维度打分表)
第一章:大模型Agent真正可用的临界点到了吗?——2026奇点大会Function Calling落地成熟度评估矩阵(含6维度打分表) 2026奇点智能技术大会(https://ml-summit.org) Function Calling 已从实验性接口演进为生产级能力核心组件。20…...
绿联NAS使用host模式安装Firefox访问路由器的避坑指南(含端口冲突解决方案)
绿联NAS主机模式部署Firefox访问内网设备的全链路实践 在家庭或小型办公网络中,NAS设备往往需要直接访问路由器管理界面进行配置调整。绿联NAS基于Linux系统的容器化功能,通过主机网络模式(host)运行Firefox浏览器,能够…...
Ollama镜像免配置优势解析:ChatGLM3-6B-128K无需conda/pip手动依赖
Ollama镜像免配置优势解析:ChatGLM3-6B-128K无需conda/pip手动依赖 1. 开篇:告别繁琐配置的AI部署新时代 如果你曾经尝试过在本地部署AI大模型,一定经历过这样的痛苦:安装Python环境、配置CUDA驱动、解决依赖冲突、处理版本兼容…...
