JavaScript设计模式-原型模式(21)

简介: JavaScript设计模式-原型模式(21)

原型设计模式指的是创建对象的一种方式,该设计模式用于创建重复的对象,减少了创建对象的代价且提高了代码运行效率,也可以说是创建对象的最佳方式。


原型设计模式的关键在于克隆,也可以说基于已创建好的对象,进行克隆出来一个新的对象。我们也可以对克隆出来的新对象进行修修改改,而不用在从头再来创建新对象并进行配置。


原型设计模式在业务中常用于页面有很多焦点图的功能,由于焦点图功能相似,此时我们就可以采用该设计模式,在生活中我们所常见的,复印某些纸质文档,复印自己的简历,这都属于原型设计模式


原型设计模式的实现的关键点在于对原型链的掌握

原型链


这里我们要注意的是:

  1. 引用数据类型的所拥有的是隐式原型,属性名是__proto__,属性值是一个对象,指向的是它构造函数的prototype
  2. 函数所拥有的是显式原型,属性名是prototype,属性值是一个对象,引用数据类型没有prototype这个属性

什么叫做原型链


当我们去访问对象的某个属性或者方法时,它会现在对象自身进行查找该属性,如果自身未找到,则会去自身的__proto__进行查找(也就是它构造函数的prototype),如果还没有找到就会去构造函数的prototype的__proto__中查找,如果查找不到则会返回undefined,函数查找也是如此,不过自身的属性为prototype而不是__proto__,这样的查找机制类似于链条,因为是原型,所以叫做原型链


我们来用原型设计模式做一个小案例,我们对于常用的书籍进行复印,先声明一个类,这个类是我们所拥有的书籍

class Book {
            constructor(bookName) {
                this.bookName = bookName;
            }
            getName() {
                console.log(new Date()+'书籍名称为:', this.bookName);
            }
        }
复制代码

我们声明一个复印书籍类,这个类通过一个方法进行打印我们所拥有的书籍

class Copier{
            constructor(proto){
                this.proto=proto;
            }
            clone(){
                return new Book(this.proto.bookName);
            }
        }

获取到我们现在所拥有的书籍进行打印

const jsBook=new Book('JavaScript第四版');
        jsBook.getName();
        const jsBookCopy=new Copier(jsBook);
        const jsBookClone=jsBookCopy.clone();
        jsBookClone.getName()

原型设计模式在我们需要的数据和已有的数据相似度极高的时候,我们可以对其进行克隆,减少了创建新对象的高成本


坚持努力,无惧未来!

相关文章
|
7月前
|
设计模式 JavaScript Java
【设计模式】【创建型模式】原型模式(Prototype)
一、入门 什么是原型模式? 原型模式(Prototype Pattern)是一种创建型设计模式,它通过复制现有对象来创建新对象,而不是通过实例化类。 原型模式的核心是克隆(Clone),即通过复制现有
221 15
|
设计模式 JavaScript 前端开发
JavaScript设计模式--访问者模式
【10月更文挑战第1天】
305 124
|
10月前
|
设计模式 JavaScript 算法
浅谈几种js设计模式
设计模式是软件开发中的宝贵工具,能够提高代码的可维护性和扩展性。通过单例模式、工厂模式、观察者模式和策略模式,我们可以解决不同场景下的实际问题,编写更加优雅和高效的代码。
306 8
|
11月前
|
设计模式 存储 Java
「全网最细 + 实战源码案例」设计模式——原型模式
原型模式(Prototype Pattern)是一种创建型设计模式,通过复制现有对象来创建新对象,适用于创建成本高或复杂的对象场景。其核心思想是“克隆”,避免直接实例化类。结构上分为抽象原型类、具体原型类和客户端。优点包括减少对象创建成本、隐藏复杂性、简化实例创建;缺点是处理循环引用的复杂对象时较为麻烦。实现步骤为定义原型类、重写`clone()`方法并调用。注意事项包括浅拷贝与深拷贝的区别及`Cloneable`接口的使用。
191 20
|
设计模式 前端开发 JavaScript
JavaScript设计模式及其在实战中的应用,涵盖单例、工厂、观察者、装饰器和策略模式
本文深入探讨了JavaScript设计模式及其在实战中的应用,涵盖单例、工厂、观察者、装饰器和策略模式,结合电商网站案例,展示了设计模式如何提升代码的可维护性、扩展性和可读性,强调了其在前端开发中的重要性。
180 2
|
设计模式 Java 关系型数据库
【Java笔记+踩坑】设计模式——原型模式
对比原型模式和传统方式的实现思路、代码方案、优缺点,阐述原型模式的使用场景,以及深拷贝、浅拷贝等相关概念,并扩展原型模式在Spring源码中的应用。
【Java笔记+踩坑】设计模式——原型模式
|
设计模式 Java
Java设计模式-原型模式(3)
Java设计模式-原型模式(3)
149 0
Java设计模式-原型模式(3)
|
设计模式 JavaScript 前端开发
从工厂到单例再到策略:Vue.js高效应用JavaScript设计模式
【8月更文挑战第30天】在现代Web开发中,结合使用JavaScript设计模式与框架如Vue.js能显著提升代码质量和项目的可维护性。本文探讨了常见JavaScript设计模式及其在Vue.js中的应用。通过具体示例介绍了工厂模式、单例模式和策略模式的应用场景及其实现方法。例如,工厂模式通过`NavFactory`根据用户角色动态创建不同的导航栏组件;单例模式则通过全局事件总线`eventBus`实现跨组件通信;策略模式用于处理不同的表单验证规则。这些设计模式的应用不仅提高了代码的复用性和灵活性,还增强了Vue应用的整体质量。
289 1
|
设计模式 JavaScript 前端开发
小白请看 JS大项目宝典:设计模式 教你如何追到心仪的女神
小白请看 JS大项目宝典:设计模式 教你如何追到心仪的女神
|
设计模式
iLogtail设计模式问题之iLogtail中的原型模式是什么
iLogtail设计模式问题之iLogtail中的原型模式是什么
iLogtail设计模式问题之iLogtail中的原型模式是什么