在模块javascript中创建对象

时间:2014-12-30 22:33:51

标签: javascript design-patterns

我正在学习javascript中的设计模式但是我在创建模块时遇到了问题。我正在模块中创建一个Person对象,并且我将它与构造函数模式结合起来,因为我也在学习它,但没有任何反应。

任何人都可以帮助我,我不会在这里犯错误

var myModule = (function () {
    function Person(id, name) {
        this.id = id;
        this.name = name;
    }

    Person.prototype.toString = function () {
        return "\nID: " + this.Id + "\nName: " + this.name;
    };

    return {
        newPerson: function (id, name) {
            return new Person(id,name);
            console.log(Person.toString());
        }
    };
})();

var x = myModule;

x.newPerson(1, "John");

1 个答案:

答案 0 :(得分:1)

你应该使用

var myModule = (function () {
    function Person(id, name) {
        this.id = id;
        this.name = name;
    }

    return {
        newPerson: function (id, name) {
            return new Person(id,name);
        }
    };
})();

var x = myModule;

console.log(x.newPerson(1, "John"));

忘记toString(),大多数控制台都可以获取对象,并以更好的方式显示它。

在您的情况下,您想要记录toString()构造函数的Person,这将产生如下字符串:

"function Person(id, name) {
    this.id = id;
    this.name = name;
}"

但它没有运行,因为你把它放在newPerson()函数的return语句之后,return语句停止执行并返回结果。