我正在学习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");
答案 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语句停止执行并返回结果。