JavaScript原型对象与工厂模式详解

需积分: 1 0 下载量 98 浏览量 更新于2024-09-05 收藏 11KB MD 举报
本文主要介绍了JavaScript中的面向对象编程(OOP)概念,尽管JavaScript并非传统意义上的面向对象语言,但其函数式特性使得对象原型(prototype)成为实现类似类的功能。在JavaScript中,每个函数实际上都有一个`prototype`属性,它引用的是一个原型对象,这个原型对象充当了类中的方法和属性的共享池,使得多个实例可以从同一个基础原型上继承属性和行为。 当你创建一个对象时,如`var box = new Object();`,可以通过`box`实例设置新的属性和方法。然而,这会导致每次实例化时都创建一份独立的副本,可能会造成代码冗余。为了解决这个问题,JavaScript引入了工厂模式。工厂模式通过定义一个函数(如`createObject`),在这个函数内部创建并初始化对象,然后返回该对象实例。这样,当我们调用`var box1 = createObject('lisa', 100);`和`var box2 = createObject('tom', 200);`时,实际上是复用了一个原型对象,从而减少了代码量。 例如: ```javascript function createObject(name, age) { var obj = new Object(); // 创建新对象 obj.name = name; // 给对象添加属性 obj.age = age; obj.run = function() { // 给对象添加方法 return this.name + this.age + '运行中'; }; return obj; // 返回创建好的对象实例 } // 使用工厂模式创建对象 var box1 = createObject('lisa', 100); var box2 = createObject('tom', 200); // 调用对象的方法,可以看到它们共享相同的run方法 console.log(box1.run()); // 输出 'lisa100运行中' console.log(box2.run()); // 输出 'tom200运行中' ``` 总结来说,JavaScript虽然没有传统意义上的类,但通过`prototype`机制实现了对象的继承和多态,通过工厂模式优化了对象的创建过程,避免了代码重复,提升了代码的可维护性和复用性。这就是JavaScript面向对象编程的一些核心概念和实践技巧。