如何在javascript中创建对象_工厂模式与构造函数有何不同?

admin 百科 12
工厂模式是普通函数,直接调用返回新对象,不依赖new且this无关紧要;构造函数需用new调用,通过this绑定属性方法,支持instanceof和原型继承。

如何在javascript中创建对象_工厂模式与构造函数有何不同?-第1张图片-佛山资讯网

工厂模式和构造函数都是创建对象的方式,但核心区别在于:工厂模式是普通函数,返回新对象;构造函数需用 new 调用,内部通过 this 绑定属性和方法,并隐式返回实例。

工厂模式:封装创建逻辑,不依赖 new

工厂函数本质是普通函数,接收参数,内部创建并返回一个新对象。它不修改 this,也不要求调用者使用 new,适合需要灵活返回不同类型对象的场景。

例如:

function createPerson(name, age) {
  return {
    name: name,
    age: age,
    greet() {
      return `Hello, I'm ${this.name}`;
    }
  };
}

const p1 = createPerson('Alice', 30); // ✅ 正常调用
const p2 = new createPerson('Bob', 25); // ❌ 无意义,不会报错但 this 指向错误

登录后复制

  • 每次调用都生成全新对象,方法无法复用(每个实例都有独立的 greet 函数)
  • 无法用 instanceof 判断类型(返回的是普通对象,没有构造器记录)
  • 适合简单、一次性、多变结构的对象创建,比如配置项、API 响应数据转换

构造函数:定义实例模板,配合 new 使用

构造函数约定首字母大写,内部用 this 添加属性和方法,必须通过 new 调用,才能正确绑定实例上下文并返回新对象。

标签: javascript es6 java 区别

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~