当前位置: 首页 > news >正文

JavaScript constructor原型原型继承

constructor

在 JavaScript 中,构造函数是一种特殊的函数,使用 new 关键字来调用,用于创建对象实例。JavaScript 中的构造函数通常通过 function 关键字定义。

例如:

function Person(name, age) {this.name = name;this.age = age;
}

在这个例子中,Person 就是一个构造函数,用于创建 Person 类型的对象实例。构造函数内部使用 this 关键字来引用新创建的对象,并给对象赋予属性。

所有的 JavaScript 对象都有一个 constructor 属性,这个属性指向创建该对象的构造函数。例如,如果有一个 person 对象是通过 Person 构造函数创建的,那么 person.constructor 将指向 Person 函数本身。

JavaScript 中的 constructor 属性可以用于检查对象的类型或者动态创建对象,但需要注意的是,这个属性可以被改写,因此不应该完全依赖它来确定对象的类型。


原型(prototype)

在 JavaScript 中,每个对象都有一个原型对象(也称为 __proto__)。原型对象是其他对象的基础,它定义了对象的共享属性和方法。当你创建一个新对象时,该对象会从原型对象继承属性和方法。

  1. 对象原型链

     1)每个 JavaScript 对象(除了 null)都有一个原型链。原型链是通过 __proto__ 属性链接到原型对象的链式结构。  2)如果对象在自身找不到属性或方法,它会沿着原型链向上查找,直到找到该属性或方法或者到达原型链的顶部(即 Object.prototype)。
  2. Object.prototype

      1)Object.prototype 是所有对象的顶层原型对象。它包含 JavaScript 中所有对象共享的基本方法,例如 toString()hasOwnProperty() 等。 2)当你创建一个对象时,这个对象会自动连接到 Object.prototype,并继承其方法。

原型继承

原型继承是 JavaScript 中实现对象继承的一种有效方式,它利用了原型链的特性,使得对象可以共享属性和方法,并能通过原型链查找的方式实现继承。

// 定义一个父类 Person
function Person(name, age) {this.name = name;this.age = age;
}// 在 Person 的原型上添加方法
Person.prototype.greet = function() {return `Hello, my name is ${this.name}.`;
};// 定义一个子类 Student,通过原型链继承 Person
function Student(name, age, school) {// 调用父类的构造函数以初始化父类属性Person.call(this, name, age);this.school = school;
}// 设置 Student 的原型链以继承 Person
Student.prototype = Object.create(Person.prototype);
Student.prototype.constructor = Student;// 在 Student 的原型上添加自己的方法
Student.prototype.study = function() {return `${this.name} is studying at ${this.school}.`;
};// 创建 Student 的实例
let student = new Student('Alice', 20, 'XYZ University');// 调用继承的方法
console.log(student.greet()); // 输出 "Hello, my name is Alice."
console.log(student.study()); // 输出 "Alice is studying at XYZ University."
1.创建父类 Person :
Person 是一个构造函数,它接受 name 和 age 参数,并将它们分配给新创建的对象的属性。 Person.prototype.greet 是一个方法,被Person 的所有实例继承。

 
2.创建子类 student :
Student 构造函数使用 person.ca1l(this,name,age)来调用父类 person 的构造函数,以确保子类实例可以正确初始化父类的属性;   0bject.create(Person.prototype)创建了一个新对象,这个对象的原型指向Person.prototype ,从而建立了 Student 的原型链。
3.继承和添加方法:
Student.prototype 现在包含了  Person.prototype的所有方法,因此 Student 实例可以访问到 greet()方法 ; 在 Student.prototype 上添加了 study()方法,这是 Student 类特有的方法,它不会影响到 Person 类或其它对象。

 
4.实例化和调用方法:
创建 Student 的实例 student 后,可以调用继承自 Person
和自身定义的方法

 instanceof

instanceof 运算符用于检测构造函数的 prototype 属性是否出现在某个实例对象的原型链上。

object instanceof constructor (object:实例对象,constructor:构造函数)

相关文章:

JavaScript constructor原型原型继承

constructor 在 JavaScript 中,构造函数是一种特殊的函数,使用 new 关键字来调用,用于创建对象实例。JavaScript 中的构造函数通常通过 function 关键字定义。 例如: function Person(name, age) {this.name name;this.age a…...

使用Python+moviepy保存截取视频画面

一、 使用VideoFileClip对象的的save_frame函数保存截取的第1帧画面 from moviepy.editor import * mvVideoFileClip(/home/Download/leaves.mp4) mv.save_frame(/home/Download/fst.jpg) # 默认保存截取的第1帧画面 二、 使用VideoFileClip对象的的save_frame函数保存截…...

【DOCKER】显示带UI的软件

1. Linux 1.1 宿主机开放X server权限 xhost 1.2 启动容器 docker run -it --rm --privilegedtrue --useru20 --workdir/home/u20 \ -e DISPLAYhost.docker.internal:0 u20:dev1.3 测试 # 安装测试软件 sudo apt-get -y install x11-apps# 显示测试程序 xclock2. Windows …...

Atcoder Beginner Contest 366

传送门 A - Election 2 时间限制:2秒 内存限制:1024MB 分数:100分 问题描述 在 AtCoder 市举行市长选举。候选人是 Takahashi 和 Aoki。 目前有 N 张有效选票投给了这两个候选人,并且计票正在进行中。这里&#xff0…...

【hexo博客问题】

windows下使用gitbash即可使用 其他bash会产生权限问题 npm install失败 $ npm install npm error code ENOENT npm error syscall open npm error path F:\pf_project\blog_pf\package.json npm error errno -4058 npm error enoent Could not read package.json: Error: E…...

用数组模拟栈和队列

栈 先进后出 //stk 表示定义的栈 //tt表示栈顶的下标 int stk[N], tt 0;//在栈顶上加入一个新的元素 stk[ tt] x;//弹出 tt --;//判断栈是否为空 if (tt > 0) 不为空 else empty//取出栈顶 stk[tt];1.题目 给定一个长度为 N 的整数数列,输出每个数左边第一个…...

Django内置后端和自定义后端

【图书介绍】《Django 5企业级Web应用开发实战(视频教学版)》_django 5企业级web应用开发实战(视频教学版)-CSDN博客 《Django 5企业级Web应用开发实战(视频教学版)》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com) 5.2.3 内置…...

嵌入式人工智能(OpenCV-基于树莓派的人脸识别与入侵检测)

1、人脸识别 人脸识别是一种技术,通过检测、跟踪和识别人脸上的关键特征,以确认人脸的身份。它通常用于安保系统、身份验证、社交媒体和人机交互等领域。 人脸识别技术的基本原理是先通过图像处理和计算机视觉算法,提取人脸的特征点和特征描…...

如何选择适合的香港云服务器提供商?

稳定性和可靠性 确保提供商有高水平的服务器正常运行时间,并提供可靠的数据备份和恢复选项。 网络速度和延迟 选择能够提供快速和低延迟网络连接的服务商,尤其是对于目标用户位于中国大陆的企业而言。 客户支持 查看提供商是否提供24/7的客户支持&#x…...

安卓Android JAVA校招/实习面试合集:多线程、强软弱虚引用、进程、内存管理、Activity、Fragment......

本人今年(2023年)参加了很多面试,也有幸拿到了一些大厂的offer,整理了众多面试资料,后续还会分享众多面试资料。 整理成了面试系列,由于时间有限,每天整理一点,后续会陆续分享出来&a…...

Jeecgboot 字典值自动转化:DictAspect类方法改造,支持IPage、List、Object、Map类自动转化,附有源码

改造的是DictAspect类: 原来使用的 parseDictText(Object result)方法,针对返回对象为Result 的IPage的分页列表数据进行动态字典注入,当单个对象查询,列表查询,或者多个数据放到Map中时,就不会自动转化&am…...

DVWA DOM Based Cross Site Scripting (DOM型 XSS)

DVWA DOM Based Cross Site Scripting (DOM型 XSS) 文章目录 DVWA DOM Based Cross Site Scripting (DOM型 XSS)XSS跨站原理DOM型 LowMediumHighImpossible XSS跨站原理 当应用程序发送给浏览器的页面中包含用户提交的数据,但没有经过适当验证或转义时,就…...

LinkedList集合及迭代器的源码分析

一.介绍: 二.LinkedList集合特有的API: 三.迭代器的源码分析: package com.itheima.a03myarraylist;import java.util.ArrayList; import java.util.Iterator;public class A01_ArrayListDemo1 {public static void main(String[] args) {ArrayList<String> listnew Arr…...

Go调度器

线程数过多,意味着操作系统会不断地切换线程,频繁的上下文切换就成了性能瓶颈.Go提供一种机制 可以在线程中自己实现调度,上下文切换更轻量,从而达到线程数少,而并发数并不少的效果,而线程中调度的就是Goroutine 调度器主要概念: 1.G:即Go协程,每个go关键字都会创建一个协程…...

当node节点kubectl 命令无法连接到 Kubernetes API 服务器

1.问题 当node节点当node节点kubectl 命令无法连接到 Kubernetes API 服务器 [rootnode1 ~]# kubectl get nodes The connection to the server localhost:8080 was refused - did you specify the right host or port?2. 确认 kubeconfig 文件 确保节点上有有效的 kubeco…...

直接通过类CURL方式,与GRPC方法交互的命令行工具

大家好&#xff0c;今天给大家分享的是一个命令行工具grpcurl&#xff0c;它能够直接与 gRPC 服务进行交互。 项目介绍 您可以把grpcurl想象成是 curl 的 gRPC 版本&#xff0c;但是功能更加强大。 由于 gRPC 服务之间的通信使用的是 Protocol Buffers (Protobuf) 格式的二进…...

Hive3:数据的加载与导出

一、加载数据 在创建表之后&#xff0c;表中没有数据&#xff0c;我们不可能insert存入数据。 而是&#xff0c;通过数据加载&#xff0c;将HDFS中的数据关联到Hive表中。 建表 CREATE TABLE myhive.test_load(dt string comment 时间&#xff08;时分秒&#xff09;, user_…...

React事件绑定的方式有哪些?区别?

React 中事件绑定的方式主要有以下几种&#xff1a; 直接在 JSX 中绑定事件&#xff1a; <button onClick{handleClick}>Click me</button> 这是最常见和推荐的方式。事件名&#xff08;如 onClick&#xff09;作为 JSX 的属性&#xff0c;值为一个函数&#xff0c…...

ibis:极具潜力的Python数据分析新框架

今天要给大家介绍的Python框架叫做ibis&#xff0c;没错&#xff0c;跟著名连锁酒店宜必思同名&#xff0c;其作者是创造了pandas、Arrow等著名框架的Wes McKinney。 ibis的核心理念是用同一套数据框操作API&#xff0c;统一操纵各种主流的数据运算框架&#xff0c;使得用户可以…...

SQL Zoo 8+.NSS Tutorial

以下数据来自SQL Zoo 1.at Edinburgh Napier University&#xff0c;studying (8) Computer Science&#xff0c;Show the the percentage who STRONGLY AGREE.&#xff08;在爱丁堡纳皮尔大学&#xff0c;学习“计算机科学”&#xff0c;显示STRONGLY AGREE的百分比&#xff0…...

OpenClaw跨平台控制:Kimi-VL-A3B-Thinking远程执行多模态任务方案

OpenClaw跨平台控制&#xff1a;Kimi-VL-A3B-Thinking远程执行多模态任务方案 1. 为什么需要跨平台远程控制&#xff1f; 上周五晚上11点&#xff0c;我正躺在沙发上刷手机&#xff0c;突然想起有个紧急的竞品分析报告需要处理。电脑在书房&#xff0c;实在懒得起身。这时我意…...

新一代高端工业 HMI 如何重塑现场交互体验?

繁易 FPADX 系列电容触摸屏支持 3D 可视化、多点触控、Web 远程访问与大型工程承载&#xff0c;帮助工业设备实现更高效、更直观、更智能的人机交互体验。在工业自动化持续升级的今天&#xff0c;触摸屏早已不再只是设备上的一个操作界面。对于设备制造商、系统集成商和终端工厂…...

【Python内存管理终极指南】:20年专家亲授智能内存优化策略与OOM报错秒级修复方案

第一章&#xff1a;Python智能体内存管理策略Python智能体&#xff08;如基于LLM的Agent、ReAct框架实例或自主任务规划器&#xff09;在运行过程中常面临对象生命周期动态、引用关系复杂、中间状态缓存频繁等挑战。其内存管理不能仅依赖CPython默认的引用计数与循环垃圾回收&a…...

Ostrakon-VL-8B对比评测:主流开源多模态模型在餐饮场景的较量

Ostrakon-VL-8B对比评测&#xff1a;主流开源多模态模型在餐饮场景的较量 最近在餐饮和零售行业&#xff0c;用AI来“看懂”图片的需求越来越多了。比如&#xff0c;自动识别菜品、分析菜单、甚至根据顾客拍的模糊照片推荐相似菜品。这背后&#xff0c;多模态模型是关键。 市…...

OpenClaw怎么部署?阿里云一键部署,轻松养龙虾!

还在羡慕别人的AI助手能写代码、查资料、干杂活&#xff1f;现在&#xff0c;通过阿里云OpenClaw快速部署方案&#xff0c;官方镜像一键部署&#xff0c;无需代码、只需两步&#xff0c;新手小白也能轻松“养龙虾”&#xff01; 一、OpenClaw是什么&#xff1f;为什么叫“养龙虾…...

VRCT:打破VRChat语言壁垒的实时翻译与转录工具

VRCT&#xff1a;打破VRChat语言壁垒的实时翻译与转录工具 【免费下载链接】VRCT VRCT(VRChat Chatbox Translator & Transcription) 项目地址: https://gitcode.com/gh_mirrors/vr/VRCT 在全球化的虚拟社交平台VRChat中&#xff0c;语言差异常常成为跨文化交流的主…...

保姆级教程:在ROS Noetic下用DWA算法让无人机在已知地图里自动巡航(附完整配置文件)

无人机自主导航实战&#xff1a;ROS Noetic中DWA算法的深度配置与避坑指南 当你在Gazebo仿真环境中看着无人机缓缓升起&#xff0c;准备开始它的首次自主飞行时&#xff0c;那种期待与忐忑交织的感觉&#xff0c;想必每个ROS开发者都深有体会。本文将从实战角度出发&#xff0c…...

颈椎病反复复发?终于找到根源解决办法

颈椎疼治好了又犯&#xff0c;花钱不少、遭罪不少&#xff0c;到底为啥&#xff1f;核心就两点&#xff1a;只止疼不修病灶、纤维环破裂没修复。 普通治疗只能暂时推开压迫&#xff0c;髓核还会再次突出&#xff0c;神经反复受刺激&#xff0c;酸痛麻木永远断不了根。长春颈椎腰…...

GprMax正演模拟避坑指南:从‘空白结果’到‘清晰双曲线’,我踩过的雷都在这了

GprMax正演模拟避坑指南&#xff1a;从异常结果到专业级图像的实战手册 第一次看到GprMax模拟结果窗口弹出全空白图像时&#xff0c;我盯着屏幕足足愣了三分钟——明明参数设置合理&#xff0c;模型构建完整&#xff0c;为什么输出的雷达图像就像被擦除了一样&#xff1f;这种经…...

comsol燃料电池堆冷却:模型对聚合物电解质膜 (PEM) 燃料电池堆的热管理进行建模 对电...

comsol燃料电池堆冷却&#xff1a;模型对聚合物电解质膜 (PEM) 燃料电池堆的热管理进行建模 对电池堆的所有电池单元来说&#xff0c;以相似的温度曲线进行操作非常重要&#xff0c;因为非均匀的温度分布可能会导致非均匀的水蒸气冷凝&#xff0c;以及电池单元之间出现较大的性…...