JavaScript 创建自定义对象的六种方式详解

作者:拾光时间:2026-10-24 06:43:33浏览:106

本文系统梳理了 JavaScript 中创建自定义对象的六种核心方法,包括 Object 实例、对象字面量、工厂模式、构造函数模式、原型模式以及组合使用构造函数与原型模式。详细解析了各方法的实现原理、适用场景及优缺点,重点对比了构造函数与原型模式在内存共享与类型识别上的差异,帮助开发者根据实际需求选择最优方案。

第一种方式是通过实例化 Object 对象来创建。


var person = new Object();
person.name = "rose";
person.age = 18;
person.job = "actor";
person.sayName = function () {
 console.log(this.name);
};
console.log(person); 

第二种方式采用对象字面量语法进行定义。


var person = {
 name: "rose",
 age: 18,
 job: "actor",
 sayName: function () {
 console.log(this.name);
 },
};
console.log(person);

上述两种方法属于创建对象的基础手段,其原型均指向 Object。

第三种方式是工厂模式。


function createPerson(name,age,actor){
 var person = new Object();
 person.name = "rose";
 person.age = 18;
 person.job = "actor";
 person.sayName = function () {
  console.log(this.name);
 };
 return person
}
console.log(p1 instanceof Object);//true
console.log(p1 instanceof createPerson);//false

从代码可以看出,工厂模式的本质是利用函数封装逻辑,内部通过 new Object() 方式创建对象并返回。

该模式的优势在于能够便捷地批量生成结构相似的对象。

其局限性在于无法解决对象类型的识别问题,即难以判断一个对象的具体类型。

第四种方式是构造函数模式。


function Person(name, age, job) {
 this.name = name;
 this.age = age;
 this.job = job;
 this.sayName = function () {
 console.log(this.name);
 };
}
var p = new person("rose", 18, "actor");
console.log(p instanceof Person);//true
console.log(p instanceof Object);//true

构造函数用于创建特定类型的对象,如 Object 和 Array 等内置构造函数会在运行时自动存在于执行环境中。

构造函数模式与工厂模式的主要区别在于以下几点:

  1. 不显式地创建对象实例。
  2. 直接将属性和方法赋值给 this 对象。
  3. 省略了 return 语句。

使用构造函数创建对象时必须配合 new 操作符,该过程包含以下四个步骤:

  1. 首先创建一个新对象。
  2. 将 this 指向这个新创建的对象。
  3. 执行构造函数内的代码。
  4. 最终返回该对象。

构造函数模式的优点在于,通过它创建的对象在原型上会拥有一个 constructor 属性,该属性指向构造函数 Person,最初用于标识数据类型。

优化方案探讨。


function Person(name, age, job) {
 this.name = name;
 this.age = age;
 this.job = job;
 this.sayName = sayName;
}
function sayName(){
 console.log(this.name);
}
var p = new person("rose", 18, "actor");

其缺点在于,当对象包含大量方法时,需要在多个全局作用域下定义函数,这不仅缺乏封装性,还导致全局作用域中函数过多。

第五种方式是原型模式。


function Person() {}
Person.prototype.name = "rose";
Person.prototype.age = 18;
Person.prototype.sayName = function () {
 console.log(this.name);
};
var p = new Person();
console.log(p);
 

讨论原型模式需涉及原型链,原型与原型链的关系如下图所示:

第一种方式是通过实例化 Object 对象来创建。

在 prototype 上定义的所有属性均位于原型对象中。原型上的属性和方法属于公有属性和公有方法,所有实例均可访问这些内容。

第六种方式是组合使用构造函数模式和原型模式,这是最常用的方式。


function Person(name, age) {
 this.name = name;
 this.age = age;
}
Person.prototype.sayName = function () {
 console.log(this.name);
};
var p = new Person("rose", 18);
console.log(p);

第一种方式是通过实例化 Object 对象来创建。

当对象引用其属性时,会沿原型链向上查找,直至找到 Object 的原型。

总结。

至此,关于 JavaScript 创建自定义对象的六种方法介绍完毕,更多相关内容请搜索本站历史文章或继续浏览后续文章,感谢支持!

作者最新文章