JavaScript设计模式(一)——构造器模式、原型模式、类模式

这篇具有很好参考价值的文章主要介绍了JavaScript设计模式(一)——构造器模式、原型模式、类模式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

个人简介

👀个人主页: 前端杂货铺
🙋‍♂️学习方向: 主攻前端方向,正逐渐往全干发展
📃个人状态: 研发工程师,现效力于中国工业软件事业
🚀人生格言: 积跬步至千里,积小流成江海
🥇推荐学习:🍍前端面试宝典 🍉Vue2 🍋Vue3 🍓Vue2/3项目实战 🥝Node.js🍒Three.js 🍖JS版算法
🌕个人推广:每篇文章最下方都有加入方式,旨在交流学习&资源分享,快加入进来吧


✨✨前言

大家好,这里是前端杂货铺。

软件设计模式(Design pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性、程序的重用性。

接下来,我们进入对设计模式的初步探索…

一、构造器模式

函数构造器就是可以用来构建生成新的函数或者对象的函数。

举个栗子:对于公司来说,每招进来一个人,公司负责人就要写一个人的信息,如果公司招进来100个人,就需要写100次,很是麻烦。

let employee1 = {
    name: '前端杂货铺',
    age: 22,
}

let employee2 = {
    name: '后端杂货铺',
    age: 25
}
......

let employee100 = {
    name: '全端杂货铺',
    age: 35
}

我们利用构造器模式,就可以先封装一个 Employee 方法,招进来一个人创建一个实例就可以了,很是方便。

function Employee(name, age) {
    this.name = name;
    this.age = age;

    this.info = function() {
        console.log(this.name + '-' + this.age);
    }
}

let employee1 = new Employee('前端杂货铺', 22);
console.log(employee1);
employee1.info();

let employee2 = new Employee('后端杂货铺', 25);
console.log(employee2);
employee2.info();
......

let employee100 = new Employee('全端杂货铺', 35);
console.log(employee100);
employee100.info();

JavaScript设计模式(一)——构造器模式、原型模式、类模式,设计模式,javascript,设计模式,原型模式,构造器模式,类模式

弊端:对于 name 和 age 这两个属性,每次创建实例的时候都需要在内存中开辟空间进行存储是理所当然的,但是对于 info() 方法属实是没有必要每次都在内存中开辟空间进行存储。当数据量过大时,对内存来说无疑是一种负担,会导致一定的性能问题。


二、原型模式

很简单,我们只需要把上述的 info() 方法拿出来挂到 Employee 的原型上就可以实现原型模式,进而就解决构造器模式的弊端了。

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

Employee.prototype.info = function() {
	console.log(this.name + '-' + this.age);
}

let employee1 = new Employee('前端杂货铺', 22);
console.log(employee1)
employee1.info();

let employee2 = new Employee('后端杂货铺', 25)
console.log(employee2)
employee2.info();
...

let employee100 = new Employee('全端杂货铺', 35)
console.log(employee100)
employee2.info();

JavaScript设计模式(一)——构造器模式、原型模式、类模式,设计模式,javascript,设计模式,原型模式,构造器模式,类模式


三、类模式

在 ES6 推出之后,类模式相当于合并了构造器模式和原型模式。

constructor 是一种 用于创建和初始化 class 创建的对象的特殊方法。

在一个类中 只能有一个 名为 “constructor” 的特殊方法。如果我们没有显示指定构造函数,则会添加默认的 constructor 方法。如果不指定一个构造函数方法,则使用一个默认的构造函数。

class Employee {
    constructor(name, age) {
        this.name = name;
        this.age = age;
    }

    info() {
        console.log(this.name + '-', this.name);
    }
}

let employee1 = new Employee('前端杂货铺', 22);
let employee2 = new Employee('后端杂货铺', 25);
......
let employee100 = new Employee('全端杂货铺', 35);

console.log(employee1);
console.log(employee2);
......
console.log(employee100);

JavaScript设计模式(一)——构造器模式、原型模式、类模式,设计模式,javascript,设计模式,原型模式,构造器模式,类模式


🎉🎉本篇小结

本篇文章我们初步探讨了设计模式。

我们明白了构造器模式和原型模式的优缺点以及用途。ES6 的 class 类模式,完美的对构造器模式和原型模式进行了合并和兼容。

好啦,本篇文章到这里就要和大家说再见啦,祝你这篇文章阅读愉快,你下篇文章的阅读愉快留着我下篇文章再祝!


参考资料:

  1. MDN 官方文档
  2. 百度百科 · 软件设计模式(设计模式)
  3. JavaScript设计模式 【作者:千锋教育】

JavaScript设计模式(一)——构造器模式、原型模式、类模式,设计模式,javascript,设计模式,原型模式,构造器模式,类模式文章来源地址https://www.toymoban.com/news/detail-676164.html


到了这里,关于JavaScript设计模式(一)——构造器模式、原型模式、类模式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java 构造器

    2024年02月12日
    浏览(100)
  • MyBatis-Plus:条件构造器Wrapper

    目录 1.Wrapper概述 1.1.Wrapper的继承关系 1.2.Wapper介绍  1.3.各个构造器使用区别 1.4.构造器常用方法 2.Wrapper常用构造器介绍 2.1.QueryWrapper 2.2.UpdateWrapper 2.3.LambdaQueryWrapper 2.4.AbstractWrapper 3. Lambda条件构造器 3.1.示例 4.鸣谢         我们在实际操作数据库的时候会涉及到很多的条件

    2024年02月11日
    浏览(53)
  • Java中使用es条件构造器BoolQueryBuilder

    由于es在java中查询没法像mybatis那样方便,而且es的构造器使用也比较繁琐,理解不是很方便,所以写一篇文章来记录es构造器BoolQueryBuilder查询时各种条件的构造的正确姿势。 1.构造准备 2.条件构造 must可用filter代替,查询效率会更高,因为must会对结果进行_score评估 3.构造完成

    2024年02月11日
    浏览(43)
  • MyBatis-Plus深入 —— 条件构造器与插件管理

            在前面的文章中,荔枝梳理了一个MyBatis-Plus的基本使用、配置和通用Service接口,我们发现在MyBatis-Plus的辅助增强下我们不再需要通过配置xml文件中的sql语句来实现基本的sql操作了,不愧是最佳搭档!在这篇文章中,荔枝会着重梳理有关MyBatis-Plus的两个知识点:条

    2024年02月09日
    浏览(37)
  • spring中AB类构造器存在循环依赖咋办

    A 和 B 的构造器存在循环依赖 当 A 和 B 的构造器存在循环依赖时,SmartInstantiationAwareBeanPostProcessor 无法解决这种循环依赖问题。在这种情况下,Spring 会抛出一个异常,提示用户存在循环依赖。这是因为 Spring 采用的是构造器注入,而构造器注入无法像属性注入那样提前暴露引

    2023年04月08日
    浏览(47)
  • 【Spring】浅谈spring为什么推荐使用构造器注入

    因本人实力有限,该文章主要内容(在文章基础上加了点点东西)均来自: 原文链接:https://www.cnblogs.com/joemsu/p/7688307.html 作者:joemsu ​ Spring框架对Java开发的重要性不言而喻,其核心特性就是IOC(Inversion of Control, 控制反转)和AOP,平时使用最多的就是其中的IOC,我们通过

    2024年02月13日
    浏览(36)
  • MybatisPlus-CRUD,不带条件构造器的常用方法

    BaseMapper中封装好了增删改查的方法 后面直接调用就好了 测试类 ----------------------------------------------------------------- ServiceImpl中封装了方法(特别注意批量添加只有serviceImpl中有) 测试类

    2024年02月14日
    浏览(26)
  • Java8函数式接口, 方法引用, 构造器引用, 数组引用

    只包含一个抽象方法的接口,称为函数式接口。 你可以通过Lambda表达式来创建该接口的对象。(若Lambda表达式抛出一个受检异常(即:非运行时异常),那么该异常需要在目标接口的抽象方法上进行声明 我们可以在一个接口上使用 @Functionallnterface 注解,这样做可以检查它是

    2024年02月05日
    浏览(41)
  • Spring:依赖注入的方式(setter注入、构造器注入、自动装配、集合注入)

    依赖注入的方式有setter注入、构造器注入、自动装配、集合注入 首先,Maven项目pom.xml依赖包如下: pom.xml 【注】:上述除spring依赖包之外其他三个依赖包用于测试使用。 1. setter注入 先说明一下,这里有的文件为Book2Dao(接口)、Book2DaoImpl(Book2Dao接口实现类)、Book2Service(接口)、

    2024年02月02日
    浏览(30)
  • MyBatisPlus详解(二)条件构造器Wrapper、自定义SQL、Service接口

    MyBatisPlus详解系列文章: MyBatisPlus详解(一)项目搭建、@TableName、@TableId、@TableField注解与常见配置 2.1.1 Wrapper 在BaseMapper接口提供的相关方法中,除了以id作为where条件, 还支持更加复杂的where条件,即条件构造器Wrapper : Wrapper是条件构造器的抽象类,其下有很多默认实现,继承

    2024年04月25日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包