<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 中作用域、闭包和对象那一套。感觉实现得挺巧妙的。

看懂了稳妥构造函数模式,也就明白了稳妥构造函数模式和工厂模式创建对象的区别。
posted @ 2019-09-18 09:23  isAndyWu  阅读(322)  评论(0编辑  收藏  举报