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

yizhihongxing

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常用数组操作方法,包含ES6方法

    当涉及到JavaScript开发中的数据存储和处理时,数组是最常用的数据结构之一。它可以存储不同类型的数据和对象,并且提供了许多灵活的操作方法。在本文中,我们将介绍JavaScript中常用的数组操作方法,包括ES6的方法。 常用数组操作方法 创建数组 要创建一个简单的数组,只需要将方括号中的项用逗号分隔,如下所示: const myArray = [‘ap…

    JavaScript 2023年5月27日
    00
  • js的window.showModalDialog及window.open用法实例分析

    JS的window.showModalDialog及window.open用法实例分析 在网页开发中,我们经常需要弹出新的窗口来进行交互或展示信息。其中,window.showModalDialog() 和 window.open() 方法可以用来实现窗口的打开功能。这篇文章将分析这两个方法的使用方法以及给出相应的实例。 window.showModalDi…

    JavaScript 2023年6月11日
    00
  • js实现类似jquery里animate动画效果的方法

    实现类似jQuery里的animate动画效果的方法,可以通过纯JavaScript使用定时器setInterval()来实现。 1. 编写animate函数 在JavaScript中,编写一个animate函数,接收四个参数:元素对象、目标属性、动画时长和回调函数。动画时长使用毫秒作为单位,回调函数在动画完成时执行。 /** * 实现 animate 动画…

    JavaScript 2023年6月10日
    00
  • JS中可能会常用到的一些数据处理方法

    下面是关于JS中可能会常用到的一些数据处理方法的详细攻略。 1. 字符串处理方法 1.1 字符串的拼接 在JS中,我们可以使用加号 (+) 来实现字符串的拼接。例如:var str1 = “Hello,”; var str2 = “world!”; var result = str1 + ” ” + str2; 此时 result 的值为 Hello, wo…

    JavaScript 2023年6月10日
    00
  • JS实现页面跳转与刷新的方法汇总

    下面就来详细讲解一下“JS实现页面跳转与刷新的方法汇总”的完整攻略。 1. 实现页面跳转的方法 1.1 使用 window.location.replace 方法实现页面跳转 使用 window.location.replace 方法可以在不记录浏览器历史记录的情况下,实现页面跳转,具体代码如下: window.location.replace(‘https…

    JavaScript 2023年6月11日
    00
  • javascript中数组和字符串的方法对比

    下面是详细讲解“javascript中数组和字符串的方法对比”的完整攻略。 前言 在javascript中,数组和字符串是常用的数据类型之一。它们都有各自的方法,但也有一些相同的方法。在这篇攻略中,我们将会详细讲解数组和字符串的方法对比。 数组和字符串的相同方法 length方法 数组和字符串都有一个length属性,可以获取其长度。 示例代码: let a…

    JavaScript 2023年5月27日
    00
  • js导出excel文件的简洁方法(推荐)

    下面是“js导出excel文件的简洁方法(推荐)”的完整攻略。 1. 前置知识 要实现js导出excel文件,需要了解以下知识: Blob对象:Blob 对象表示一个不可变、原始数据的类文件对象。Blob 表示的不一定是JavaScript原生格式的数据。文件类型的二进制数据也可以从一个 Blob 中读取。 URL.createObjectURL():该方法…

    JavaScript 2023年5月27日
    00
  • JavaScript实现短信倒计时60s

    当需要在网页中添加短信验证码的时候,我们通常需要一个倒计时的功能,限制60秒内只允许重新获取一次验证码。下面是JavaScript实现短信倒计时60s的攻略。 1. 倒计时基础框架 我们先来搭建倒计时的基本框架,HTML代码如下: <button id="btn">获取验证码</button> 需要注意的是,这里的…

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