编程语言
首页 > 编程语言> > JavaScript 中的原型模式

JavaScript 中的原型模式

作者:互联网

设计模式是指在开发软件解决方案时针对一组常见问题的通用可重用和可重复解决方案。设计模式不是要直接转换为源代码的已完成项目。但是,它是一个模板,可帮助开发人员了解在多个场景中使用不同解决方案解决不同问题的方法。

在编码时使用设计模式可以帮助您加快开发过程,因为它提供了经过验证的开发范例。在广泛的上下文中,有三种类型的设计模式:

最新的DZone参考卡

MySQL Essentials

  1. 创建设计模式:它包括类和对象创建模式,即抽象工厂、生成器、工厂方法、对象池、原型和单例。
  2. 结构设计模式:此设计模式完全与对象和类组合有关,并进一步分为适配器、桥接、复合、装饰器、立面、代理、蝇量级和私有类数据模式。
  3. 行为设计模式:它是专注于对象通信的设计模式。行为设计模式由不同的模式组成,例如命令、责任链、解释器、迭代器、记忆器、调解器、观察者、空对象、状态、模板方法、策略和访问者。

但是在今天的博客中,我们将介绍JavaScript中的原型设计模式。所以,让我们开始吧!

原型模式

原型是基于对象的创建设计模式。原型模式侧重于创建可用作构造函数创建的任何对象的蓝图的对象。它允许开发人员隐藏从客户端创建新实例的复杂性。在原型模式中,复制现有对象,而不是从头开始创建它。现有对象充当蓝图,并包含对象的状态。它还允许新复制的对象在需要时更改其状态,从而节省成本和开发时间。

当您创建的对象耗时、需要大量资源且成本高昂时,需要原型模式。从现有对象复制对象的最佳和简单方法是通过 clone() 方法和构造函数。

JavaScript 中的原型模式

现在我们已经概述了原型设计模式,让我们来看看它在 JavaScript 中的样子,以及如何在我们的代码中实现它。

正如我们所理解的,原型模式的核心目标是创建可用作构造函数创建的任何对象的蓝图或模板的对象。为了实现这一点,原型设计模式使用原型继承。此外,由于原生支持原型继承(对象可以使用 JavaScript 中的原型链访问原型继承),使用原型模式变得更加容易。

例如,我们可以创建一个原型方法 Car 来创建不同类型的 Car 对象,同时依次返回它们的引用,如下所示:

       //Prototype function syntax
// The Constructor (Part 1)
// An object must be defined with parameters
function Car(name) {
this.name = name;
}

        // Function Prototype (Part 2)

        // Add functionality and extend objects

        Car.prototype.showCarName = function () {

            //console.log('This is ' + this.name);

            return 'This is ' + this.name;

        }


// Calling Prototype based code
// Resembles traditional OOP styles
const carOne = new Car('SUV');
const carTwo = new Car('Sedan');
var car1 = carOne.showCarName();
var car2 = carTwo.showCarName()

console.log("Using Prototype pattern method - carOne: ", carOne) //returns objects own defined properties and methods
console.log("Using Prototype pattern method - carOne function length: ", Object.getOwnPropertyNames(carOne).length)
console.log("carOne Using Prototype pattern method type? : ", typeof carOne);// object

console.log("Using Prototype pattern method - carTwo: ", carTwo) //returns objects own defined properties and methods
console.log("Using Prototype pattern method - carTwo function length: ", Object.getOwnPropertyNames(carTwo).length)
console.log("carOne Using Prototype pattern method type? : ", typeof carTwo);// object

console.log("Using Prototype pattern - Object creation of carOne: " + car1);
        console.log("Using Prototype pattern - Object creation of carTwo: " + car2);
 

除了从 Car 原型方法返回引用之外,我们还创建了两个名为 carOne 和 carTwo 的不同对象,它们将调用原型模式构造函数 Car。当我们分别将名称传递给 SUV 和 Sedan(如 Sedan)等对象时,每当 Car 构造函数使用原型调用时,它都会返回新的 Car 实例。

JavaScript 原型模式的优点和缺点

JavaScript 原型模式的优点如下:

记住 JavaScript 中原型模式的优点,让我们也来看看它的缺点:

在开始在系统中使用原型模型之前,请确保在创建 Web 应用程序系统时仅使用原型模式,该系统应独立于其产品的构建、组成和表示方式。可以使用原型模式的另一种情况是在运行时指定实例化的类。

您需要记住的其他要点是:

标签:模式,JavaScript
来源: