javascript - 将参数传递给模块的匿名函数

标签 javascript jquery module

$(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/

相关文章:

javascript - 在包含 HTML 的字符串上使用 jQuery

javascript - 了解 Javascript 调用函数与返回函数但稍后执行函数之间的区别

jquery - 使用 jQuery 遍历 DOM

python - 在 Python 和 __init__.py 中导入模块

module - Yii2 自定义/较短的命名空间

javascript - 当我在 angularjs 中未定义时,如何将数组值获取到 Controller 中

javascript - <meter> 动画健康栏的颜色变化

javascript - 在 Jquery ajax 的 onclick 函数中传递数据

jquery - 模板未更新

python - Pytest "No module named..."问题