2026-10-26 01:24:59
JavaScript 对象创建的6种模式如下:
1. 对象字面量(Object Literals)
示例:var o = { x: 42, y: 3.14, f: function() {}, g: function() {} };
优点:简单直接,无需额外的函数或构造器。
缺点:当需要创建多个相同类型的对象时,会导致大量重复代码。
2. 工厂模式(Factory Functions)
示例:function thing() { return { x: 42, y: 3.14, f: function() {}, g: function() {} }; }
优点:解决了对象字面量重复代码的问题,可以多次调用函数创建对象。
缺点:每个对象都包含工厂函数的独立副本,可能导致内存膨胀。
3. 构造函数模式(Constructor Functions)
示例:function Student(name, age) { this.name = name; this.age = age; this.myName = function() { alert(this.name); }; }
优点:可以创建具有相同属性和方法的多个对象。
缺点:每次实例化对象时,都会重新创建构造器中的方法,增加内存开销。
4. 原型链(Prototype Chains)
示例:通过 Object.create() 或直接设置 constructor.prototype 来实现。
优点:对象可以共享原型上的方法和属性,减少内存使用。
缺点:原型链的设置和访问可能相对复杂,且在某些情况下可能导致意外的行为。
5. ES5 类(ES5 Classes with Prototypes)
示例:function Thing() { this.x = 42; this.y = 3.14; } Thing.prototype.f = function() {}; Thing.prototype.g = function() {};
优点:提供了更接近于传统面向对象编程的语法。
缺点:相对于 ES6 类语法,代码较为冗长和复杂。
6. ES6 类(ES6 Classes)
示例:class Thing { constructor() { this.x = 42; this.y = 3.14; } f() {} g() {} }
优点:语法简洁,易于理解和维护,支持继承和多态等面向对象特性。
缺点:相对于原型链,类的概念对于初学者可能较为抽象。
总结: