获取和分配Javascript模块模式中的表单元素值

获取和分配Javascript模块模式中的表单元素值,javascript,Javascript,我需要使用模块模式访问表单中的所有元素。简言之,我希望避免重复代码,并仅使用单个模块进行组织 如何在不从模块调用匿名函数的情况下执行此操作: 不要这样写:FormData.LastName() 我只想让它看起来像这样:FormData.LastName 下面是我尝试过的一个例子: 'use strict'; FormData = (function() { var formElement = document.forms.signup; return {

我需要使用
模块模式
访问表单中的所有元素。简言之,我希望避免重复代码,并仅使用单个模块进行组织

如何在不从模块调用匿名函数的情况下执行此操作:

不要这样写:
FormData.LastName()
我只想让它看起来像这样:
FormData.LastName

下面是我尝试过的一个例子:

'use strict';

FormData = (function() {

    var formElement = document.forms.signup;

    return {

        LastName: function(){
            return formElement.lName.value;
        },

        SendBtn: function(){
            return formElement.submitSignupForm;
        }
    };

})();
调用模块并访问其内部对象值,而无需
Global
exposure

FormData.SendBtn().addEventListener('click', function(e){

    document.getElementById('result').innerHTML = FormData.LastName();

    e.preventDefault();
}, false);
另一个变化:


使用Object.defineProperty

示例:
更好的文档:


您可以为此定义getter/setter。当我实现上述代码时,我得到以下错误:
uncaughttypeerror:Invalid属性。属性不能同时具有访问器和可写属性,也不能同时具有值,#
Yes查看文档。顺便说一下,这些配置已经默认设置好了,对吗?我也在阅读
面向开发人员的专业JavaScriptNicholas Zakas。
那么可写文件阻止了变量被写入?这是一个好的开始,它的工作!万分感谢!!
'use strict';

FormData = (function() {

    var formElement = document.forms.signup;

    var LName = function(input){

            return input.lName.value;
        };

    var SendBtn = function(input){

            return input.submitSignupForm;
        };

    return {

        LastName: LName(formElement),
        SendBtn:  SendBtn(formElement)
    };

})();

FormData.SendBtn.addEventListener('click', function(e){

    document.getElementById('result').innerHTML = FormData.LastName;

    e.preventDefault();

}, false);
var Mod = (function(){
    var module, formElement;
    module = {};
    formElement = document.forms.signup;

    Object.defineProperty(module, 'LastName', {
        get: function () {
            return formElement.lName.value;
        },
        writable: false,
        enumerable: true,
        configurable: true
    });
    return module;
})();