模块模式中的构造函数

rog*_*oom 5 javascript constructor prototype module-pattern

在javascript中使用模块模式时应该如何定义构造函数(如果有的话).我希望我的构造函数适合标准模块模式而不是全局模式.

为什么这样的东西不起作用,是完整的,完全是胡说八道?

var HOUSE = function() {
    return {
        Person: function() {
            var self = this;
            self.name = "john";
            function name() {
                return self.name;
            }
        }
    };
}();

var me = new HOUSE.Person();
alert(me.name());
Run Code Online (Sandbox Code Playgroud)

Ada*_*kis 1

您需要将该方法取出来,并将其附加到 Person 原型上。但是,当您这样做时,您将拥有一个 name 属性和一个 name 方法,这将不起作用,因此请考虑重命名后者

HOUSE.Person.prototype.getName = function(){
    return this.name;
}
Run Code Online (Sandbox Code Playgroud)

或者,您可以将其附加到this,并使 getName 成为特权方法:

  Person: function() {
        this.name = "john";
        this.getName = function() {
            return this.name;
        }
    }
Run Code Online (Sandbox Code Playgroud)