JavaScript 中构造函数中工厂模式怎么替代
在 javascript 中,使用工厂函数(factory function)替代构造函数是更推荐的现代做法。工厂函数通过直接返回一个对象字面量来创建实例,避免了 `new` 关键字和原型链的复杂性,同时天然支持私有变量。例如,定义一个 `createperson` 函数,内部声明私有变量并使用闭包暴露方法,调用时直接执行该函数即可得到具有相同行为的新对象。

如何封装私有数据并避免原型污染
工厂函数的核心优势在于利用作用域链实现真正的私有数据封装,且每个实例都是独立的对象,不存在共享原型的风险。开发者只需在函数内部定义需要隐藏的变量,并通过返回的对象属性或方法来访问它们。这种方式不仅代码结构扁平,而且能确保不同实例之间的状态完全隔离。

function createCar(brand, model) {
// 私有变量
let _brand = brand;
let _model = model;
return {
getBrand: function() {
return _brand;
},
getModel: function() {
return _model;
},
setModel: function(newModel) {
_model = newModel;
}
};
}
const car1 = createCar('Toyota', 'Camry');
const car2 = createCar('Honda', 'Civic');
console.log(car1.getBrand()); // "Toyota"
console.log(car2.getModel()); // "Civic"
基于程序中某个输入、条件或结果的具体问题
当传入的参数为 `null` 或 `undefined` 时,工厂函数会正常处理这些值并将其赋值给私有变量,不会抛出错误,但后续访问这些属性时会返回对应的空值。这与构造函数不同,构造函数在参数缺失时可能会依赖默认值或导致逻辑错误。开发者可以通过在函数开头添加类型检查来增强健壮性,确保输入符合预期。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











