js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式)

JS面向对象之常见创建对象的几种方式

在JavaScript中,创建对象一共有以下几种常见的方式:

  1. 工厂模式
  2. 构造函数模式
  3. 原型模式

下面我们将详细讲解每种创建对象的方式并且给出相应的示例。

工厂模式

工厂模式是用来创建多个相似对象的一种模式,它是通过一个工厂方法创建对象并返回。下面是一个简单的工厂模式的示例。

// 创建一个工厂对象
var bookFactory = {
  createBook: function(title, author, price) {
    var book = {};
    book.title = title;
    book.author = author;
    book.price = price;
    book.display = function() {
      console.log("Title: "+this.title+"\nAuthor: "+this.author+"\nPrice: "+this.price);
    };
    return book;
  }
}

// 创建两个book对象
var book1 = bookFactory.createBook("The Little Prince", "Antoine de Saint-Exupéry", 8.98);
var book2 = bookFactory.createBook("Harry Potter and the Philosopher's Stone", "J.K. Rowling", 14.99);

// 调用display方法展示book信息
book1.display();
book2.display();

在上述代码中,我们通过一个工厂方法createBook来创建了两个book对象,每个对象都有自己的title、author和price属性,同时还添加了一个display方法来展示对象的信息。

构造函数模式

构造函数模式是通过一个构造函数来创建一个对象,它的本质就是一个普通函数,只不过调用的方式和一般函数不同。下面是一个简单的构造函数模式的示例。

// 创建一个构造函数对象
function Book(title, author, price) {
  this.title = title;
  this.author = author;
  this.price = price;
  this.display = function() {
    console.log("Title: "+this.title+"\nAuthor: "+this.author+"\nPrice: "+this.price);
  };
}

// 创建两个book对象
var book1 = new Book("The Little Prince", "Antoine de Saint-Exupéry", 8.98);
var book2 = new Book("Harry Potter and the Philosopher's Stone", "J.K. Rowling", 14.99);

// 调用display方法展示book信息
book1.display();
book2.display();

在上述代码中,我们通过一个构造函数Book来创建了两个book对象,同样有title、author、price和display属性。

对于构造函数模式,我们需要注意的是如果有多个实例对象,那么这些实例对象都是独立的,它们各自保存着自己的属性和方法。

原型模式

原型模式是通过构造函数的原型来创建一个对象。在原型中定义的属性和方法将被所有实例对象所共享。下面是一个简单的原型模式的示例。

// 创建一个构造函数对象
function Book(){};
Book.prototype.title = 'none';
Book.prototype.author = 'none';
Book.prototype.price = 0;
Book.prototype.display = function() {
  console.log("Title: "+this.title+"\nAuthor: "+this.author+"\nPrice: "+this.price);
};

// 创建两个book对象
var book1 = new Book();
book1.title = "The Little Prince";
book1.author = "Antoine de Saint-Exupéry";
book1.price = 8.98;

var book2 = new Book();
book2.title = "Harry Potter and the Philosopher's Stone";
book2.author = "J.K. Rowling";
book2.price = 14.99;

// 调用display方法展示book信息
book1.display();
book2.display();

在上述代码中,我们通过构造函数Book的原型对象来创建了两个book对象。在原型中定义的属性和方法都是共享的,而title、author和price属性则是在实例化对象时被重新赋值的。

总结

既然提到了创建对象,那就不能不提对象池。对象池就是保存一定数量的相同对象供反复使用的一种方法。当需要创建一个新对象时,对象池中有现成的对象可以使用则返回一个现成的对象,如果对象池中没有现成的对象则创建新的对象。这种方式避免了频繁的对象创建和销毁,提高了效率。同时,需要重点注意的是对象复用时可能会存在对象的污染问题。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js面向对象之常见创建对象的几种方式(工厂模式、构造函数模式、原型模式) - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • JavaScript实现将UPC转换成ISBN的方法

    要将UPC转换成ISBN,我们需要用到一些JavaScript知识。下面是的完整攻略,包含两条示例: 准备工作 要实现将UPC转换成ISBN,我们需要用到一个叫作EAN-13的标准。这个标准将UPC视为EAN-13的一个子集,因此我们可以通过将UPC的前缀添加到一个特定的EAN-13前缀来得到相应的ISBN。 在开始编写代码之前,我们需要确定一个用于转换UP…

    JavaScript 2023年5月19日
    00
  • JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)

    下面是详细讲解“JS实现发送短信验证后按钮倒计时功能(防止刷新倒计时失效)”的完整攻略。 一、需求分析 我们要实现的功能是:在用户点击发送短信验证码按钮后,按钮变为不可点击状态,同时开始显示倒计时,直到倒计时结束后按钮恢复可点击状态。 为了防止用户在倒计时过程中刷新页面导致倒计时失效,我们需要使用浏览器的本地存储(localStorage/sessionSt…

    JavaScript 2023年6月11日
    00
  • js+css实现卡片轮播图效果

    下面是“js+css实现卡片轮播图效果”的完整攻略。 1. 概述 卡片轮播图指的是一种类似于滑动门的效果,即多个内容块轮流展示在同一个位置上的效果。在实现卡片轮播图的过程中,我们需要用到HTML、CSS、JS三种语言。 2. HTML 首先,我们需要在HTML中定义卡片轮播图的容器。 <div class="carousel"&gt…

    JavaScript 2023年6月11日
    00
  • javascript实现缓动动画效果

    下面是详细讲解“JavaScript实现缓动动画效果”的攻略。 什么是缓动动画? 缓动动画是在动画开始和结束的时候逐渐加速或减速,它不像匀速动画那样是一直保持同样的速度,而是可控的速度随时间而变化。 缓动动画的实现原理 缓动动画的实现原理是利用数学函数计算每一帧动画的时间间隔和位置坐标,并根据计算结果以定时器的方式实现动画效果。 常用的缓动函数有很多,比如线…

    JavaScript 2023年6月10日
    00
  • ES6知识点整理之对象解构赋值应用示例

    ES6知识点整理之对象解构赋值应用示例是一篇介绍ES6对象解构赋值应用的文章,下面我分步讲解一下。 一、文章简介 该文章主要介绍了ES6对象解构赋值的基础概念和应用示例,阐述了对象解构赋值在数据结构中的优势,进而说明了如何使用对象解构赋值美化代码。 二、对象解构赋值的基础概念 在 ES6 中,对象解构赋值是一种语法,通过这种语法,可以在一行代码中将一个对象中…

    JavaScript 2023年5月27日
    00
  • ASP vbs 代码大小写规范

    ASP(Active Server Pages)是一种基于服务器的脚本语言,支持使用vbs(Visual Basic Script)进行编程。在编写ASP vbs代码时,要遵守一定的大小写规范,以保证代码的可读性和可维护性。 下面是ASP vbs代码的大小写规范攻略: 1. 变量命名规范 变量名应该有意义并保持小写字母,不同单词之间使用下划线 (_) 连接。…

    JavaScript 2023年6月11日
    00
  • anime.js 实现带有描边动画效果的复选框(推荐)

    Anime.js 实现带有描边动画效果的复选框攻略 简介 Anime.js 是一个轻量级的 JavaScript 动画库,可以用来快速的创建各种各样的动画效果。本攻略将介绍如何通过 Anime.js 实现带有描边动画效果的复选框。 步骤 1. 安装 Anime.js 我们首先需要安装 Anime.js,可以通过 npm 或者直接下载源码安装。 npm ins…

    JavaScript 2023年6月11日
    00
  • js实现简单模态框实例

    这里是基于 Markdown 编写的攻略,以下将详细讲述如何使用 JavaScript 实现简单模态框。 简述 模态框(Modal)是一种弹出框的交互方式,即在页面的中心或者某个指定区域以弹窗的形式展示内容,遮罩层和窗口通常会阻止用户进行其他操作,只有完成当前操作或者关闭模态框后才能继续页面内的其他操作。 使用步骤 参考以下的实现步骤: 1.创建基本结构 我…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部