稳妥构造函数模式与工厂模式的区别

时间:2023-03-09 21:21:37
<JavaScript> 稳妥构造函数模式与工厂模式的区别
稳妥构造函数模式的代码应该是这样的:
function Person(name, age, job) {
var o = new Object(); // private members
var nameUC = name.toUpperCase(); // public members
o.sayName = function() {
alert(name);
};
o.sayNameUC = function() {
alert(nameUC);
}; return o;
} var person = Person("Nicholas", 32, "software Engineer"); person.sayName(); // "Nicholas"
person.sayNameUC(); // "NICHOLAS" alert(person.name); // undefined
alert(person.nameUC); // undefined

凡是想设为 private 的成员都不要挂到 Person 返回的对象 o 的属性上面,挂上了就是 public 的了。
当然,这里的 private 和 public 都是从形式上类比其他 OO 语言来说的,其实现原理还是 js 中作用域、闭包和对象那一套。感觉实现得挺巧妙的。

看懂了稳妥构造函数模式,也就明白了稳妥构造函数模式和工厂模式创建对象的区别。