JavaScript中创建对象就像搭积木,有几种不同的搭建方法,每种都有自己的特点和适用场景。下面我用最通俗的方式讲解这些方法:
1. 对象字面量 - 最直接的"手工打造"
特点:简单直观,适合创建单个对象
缺点:创建多个相似对象时需要重复代码
const person = { name: "万码学堂", age: 25, sayHi: function() { console.log(`你好,我是${this.name}`); } };
2. 构造函数 - 批量生产的"模具"
特点:可以批量创建相似对象
注意:每个方法都会在新对象上创建,可能浪费内存
function Person(name, age) { this.name = name; this.age = age; this.sayHi = function() { console.log(`你好,我是${this.name}`); }; } const person1 = new Person("万码", 25); const person2 = new Person("学堂", 30);
3. 原型模式 - 共享的"家族基因"
特点:所有实例共享方法和属性,节省内存
缺点:所有实例默认属性值相同
function Person() {} Person.prototype.name = "万码学堂"; Person.prototype.age = 0; Person.prototype.sayHi = function() { console.log(`你好,我是${this.name}`); }; const person1 = new Person(); person1.name = "张三";
4. 组合模式 - 最常用的"黄金搭档"
特点:结合构造函数和原型的优点
推荐:这是最常用的对象创建方式
function Person(name, age) { // 实例属性 this.name = name; this.age = age; } // 共享方法 Person.prototype.sayHi = function() { console.log(`你好,我是${this.name}`); }; const person1 = new Person("万码学堂", 25);
5. ES6类语法 - 现代的"语法糖"
特点:语法更简洁,底层仍然是原型继承
注意:类中的方法会自动添加到原型上
class Person { constructor(name, age) { this.name = name; this.age = age; } sayHi() { console.log(`你好,我是${this.name}`); } } const person1 = new Person("万码学堂", 25);
其他创建方式
Object.create():基于现有对象创建新对象
工厂模式:用函数封装对象创建过程
单例模式:确保一个类只有一个实例
如何选择?
简单对象 → 对象字面量
多个相似对象 → 组合模式或ES6类
需要继承 → 原型模式或ES6类
需要特殊控制 → 工厂模式或单例模式
记住:JavaScript中几乎所有东西都是对象,理解对象创建方式是掌握JavaScript的关键!
0条评论
点击登录参与评论