$(document).ready(function () {
var patient = (function (options) {
var age = options.age;
var name = options.name;
function getName() {
return this.name;
}
function setName(val) {
name = val;
}
function getAge() {
return this.age;
}
function setAge(val) {
age = val;
}
return {
getAge: getAge,
setAge: setAge,
getName: getName,
setName: setName
}
})();
});
我意识到我在这里的示例中从未传递任何选项。
如果我尝试执行类似 patient.setAge('100')
的操作,然后执行 console.log(patient.getAge())
我会收到一条错误消息,提示 cannot读取属性 Age of undefined
。我试图获得的首要主题是在一个模块中,我如何模拟构造函数来实例化一个新的患者对象,同时保持私有(private)变量和所有爵士乐的所有 OOP 优点。
我在这里看到了模块模式中的一些构造函数示例,但我对它们的理解不是很好。通常在模块中有一个构造函数是个好主意吗?它的主要目的是否与基于类的语言相似?
最佳答案
这是一个构造函数:
function Patient(options) {
options = options || {};
this.age = options.age;
this.name = options.name;
}
$(document).ready(function () {
var patient = new Patient();
});
如果你愿意,你可以把它放在一个模块里。你不应该做的是提供 getter 和 setter,尤其是那些什么都不做的。如果您通过两个属性公开变量以获取和设置它,它应该只是一个属性。
关于javascript - 将参数传递给模块的匿名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19879670/