javaScript设计模式之原型模式

        我们创建的每个函数都有一个prototype(原型)属性,这个属性是一个指针,指向一个对象,而这个对象的用途是包含可以由特定类型的所有实例共享的属性和方法。字面意思来理解,那么prototype就是通过调用构造函数而创建的那个对象实例的原型对象。使用原型对象的好处是可以让所有的对象实例共享它所包含的属性和方法。换句话说,不必在构造函数中定义对象实例的信息,而是可以将这些信息直接添加到原型对象中。

    // 创建一个构造函数function Person(name, age) {this.name = name;this.age = age;}// 在Person的原型上添加方法Person.prototype={speck:function(){console.log("我的姓名是 " + this.name + " 年纪 " + this.age);},}// 创建Person的实例var person1 = new Person("张三", 25);var person2 = new Person("李四", 30);// 调用原型上的方法person1.speck(); // 输出: 我的姓名是 张三 年纪 25person2.speck(); // 输出: 我的姓名是 李四 年纪 30

定义了一个Person构造函数,它接受nameage作为参数,并将它们赋值给新创建的对象的nameage属性。然后在Person的原型上添加了一个speck方法。这样通过new Person()创建的实例都将继承这个方法。最后,我们创建了两个Person的实例,并调用了它们的speck方法。

使用ES6创建

// 使用ES6的class关键字定义一个Car类class Car {constructor(color, make, model) {// 在构造函数中定义实例属性this.color = color;this.make = make;this.model = model;}// 在类上定义方法,这些方法会成为原型方法startEngine() {console.log('startEngine!');}stopEngine() {console.log('stopEngine!');}describe() {console.log(` ${this.color} ${this.make} ${this.model}.`);}}// 创建Car类的实例const myCar = new Car('宝石蓝', '拖拉机', 'S500');const anotherCar = new Car('蓝宝石', '三轮车', 'S600');// 调用实例方法myCar.startEngine(); // 输出:startEngineanotherCar.startEngine(); // 输出: startEnginemyCar.describe(); // 输出: 宝石蓝 拖拉机 S500anotherCar.describe(); // 输出: 蓝宝石 三轮车 S600myCar.stopEngine()// 输出: stopEngineanotherCar.stopEngine(); // 输出: stopEngine

        使用 class 关键字定义了一个名为 Car 的类。类定义中包含了一个 constructor 方法,它是类的构造函数,用于初始化新创建的对象实例。在 constructor 方法中,我们定义了 colormake 和 model 这三个实例属性,并将传入的参数值赋给它们。在类定义中直接定义的方法(如 startEnginestopEngine 和 describe)会自动成为类的原型方法。这意味着所有通过 new Car(...) 创建的实例都会继承这些方法。使用 new 关键字和类名 Car 创建类的实例。每个实例都会有自己的 colormake 和 model 属性值。与ES5中的原型模式一样,我们可以直接通过实例来调用定义在类上的方法。

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

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

相关文章

开曼群岛:Web3企业的乐园

开曼群岛:Web3企业的理想之地 开曼群岛,在数字革命中大放异彩。近年来,该地区成立的Web3企业数量显著增加,如果保持目前的发展速度,并持续优化立法,那么扩展的速度将无可限量。本文将探讨推动这一增长的关…

unity学习(88)——断线的原因--客户端队列死锁(头部异常为null)

客户端接受数据包的队列如下: 测试可以得到明显的溢出结果,肯定是有问题的! 在catch中输出具体异常:Object reference not set to an instance of an object! 然后通过debug.log定位具体异常位置!这也不算浪费时间&…

【QT学习】9.绘图,三种贴图,贴图的转换,不规则贴图(透明泡泡)

一。绘图的解释 Qt 中提供了强大的 2D 绘图系统,可以使用相同的 API 在屏幕和绘图设备上进行绘制,它主要基于QPainter、QPaintDevice 和 QPaintEngine 这三个类。 QPainter 用于执行绘图操作,其提供的 API 在 GUI 或 QImage、QOpenGLPaintDev…

【Java | 多线程】可重入锁的概念以及示例

什么是可重入锁(Reentrant Lock)? 可重入锁(又名递归锁)是一种特殊类型的锁,它允许同一个线程在获取锁后再次进入该锁保护的代码块或方法,而不需要重新获取锁。 说白了,可重入锁的…

互联网和嵌入式,哪个更吃香?

在开始前我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!显然,互联网更受青…

地形系统-unity3D地形的生成原理和地形表面贴图的混刷原理

Unity3D地形的生成原理是通过使用高度图来创建地形。高度图是一个灰度图像,其中每个像素的灰度值表示该位置的高度。在Unity中,可以使用工具或编程方式创建高度图,然后将其应用于地形对象。 地形表面贴图的混刷原理是通过将多个纹理图层叠加…

No.1 - 职场关键角色通识宝典之课程内容先导

📖 该文隶属 程序员:职场关键角色通识宝典 ✍️ 作者:哈哥撩编程(视频号同名) 博客专家全国博客之星第四名超级个体COC上海社区主理人特约讲师谷歌亚马逊演讲嘉宾科技博主极星会首批签约作者 🏆 推荐专栏…

Mysql全局优化总结

Mysql全局优化总结 从上图可以看出SQL及索引的优化效果是最好的,而且成本最低,所以工作中我们要在这块花更多时间 服务端系统参数 官方文档:https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_connections…

MSE实现全链路灰度实践

技术架构包括以下基础设施和云服务: 1个地域:ACK集群、微服务应用、MSE实例均部署在同一地域下。 1个专有网络VPC:形成云上私有网络,确保核心云资源的网络环境,如容器服务ACK、微服务引擎MSE。 ACK集群:简单…

七星创客新零售系统:颠覆性商业模式的崛起

大家好,我是微三云周丽,今天给大家分析当下市场比较火爆的商业模式! 小编今天跟大伙们分享什么是七星创客新零售系统? 随着经济的快速发展和科技的不断进步,商业模式的革新成为了企业发展的关键。在这个新旧动能转换、…

CentOS配置JDK8环境并安装配置neo4j

1. 工具安装 1. 安装wget yum install -y wget2. 安装vim yum install -y vim-enhanced2. 配置JDK 1. 安装JDK 先到官网下载jdk8的压缩包,点我传送,并将压缩包上传到虚拟机的/usr/local目录下。 cd /usr/local # 进入 /usr/local目录 tar -zxvf jdk-…

使用Perf诊断PostgreSQL性能问题

1 编译参数 使用perf获取完整的堆栈信息需要下面几个编译参数: -O0:编译器不做优化-ggdb3:增加了为GDB优化的调试信息,级别是3-g3:增加了调试信息,级别是3-fno-omit-frame-pointer:保留完成的…

「JavaEE」线程状态

🎇个人主页:Ice_Sugar_7 🎇所属专栏:JavaEE 🎇欢迎点赞收藏加关注哦! 线程状态 🍉start 和 run 的区别🍉终止线程🍉join & 阻塞状态🍉线程六大状态 &…

Java离线视频提取音频+音频提取文案

需引入依赖javacv、vosk相关依赖, 至于javacv依赖,网上有很多缩减方案,注释部分是可行的缩减方案,至于视频提取视频这里无需安装ffmpeg,只需引入依赖。而vosk需要下载模型方可使用,并且下载比较慢&#xf…

docker 基本命令

目录 一、docker 镜像操作命令 1.1.查询软件镜像 1.2.docker pull:下载镜像 1.3.docker push:上传镜像 1.4.docker images:查看本地镜像 1.5.docker inspect :获取镜像详细信息 1.6.docker tag:添加镜像标签 …

tornado模板注入

这是我在做一道ctf题目当中遇到的,不太会,所以浅浅学习了一下,跟大家分享。 1.介绍 tornado是python当中的一个模板,因此这个漏洞是归属于SSTI(服务器模板漏洞),所谓的模板其实就是一种框架,p…

L2-052 吉利矩阵

所有元素为非负整数,且各行各列的元素和都等于 7 的 33 方阵称为“吉利矩阵”,因为这样的矩阵一共有 666 种。 本题就请你统计一下,把 7 换成任何一个 [2,9] 区间内的正整数 L,把矩阵阶数换成任何一个 [2,4] 区间内的正整数 N&…

Git:使用conda命令切换虚拟环境

1. 问题 在win10电脑的Git中,无法使用conda list命令,报错(bash:conda:command not found)。也无法使用conda activate base命令激活虚拟环境,报错(bash:conda&#xff…

pollLast() 和poll啥区别

在 Java 中,pollLast() 和 poll() 是 Deque 接口的两个不同的方法,它们都用于从双端队列中移除并返回元素,但它们移除元素的位置不同: poll(): poll() 方法从双端队列的前端移除并返回第一个元素(即队列的头部&#xf…

共享单车数据分析与需求预测项目

注意:本文引用自专业人工智能社区Venus AI 更多AI知识请参考原站 ([www.aideeplearning.cn]) 项目背景 自动自行车共享系统是传统自行车租赁的新一代,整个会员、租赁和归还过程都变得自动化。通过这些系统,用户可以…