【问题标题】:Return 2 objects using an IIFE使用 IIFE 返回 2 个对象
【发布时间】:2020-06-03 23:07:56
【问题描述】:

我正在尝试使用 IIFE 返回 2 个对象。我在这里找不到什么问题。

var UIController = (function(){

    return{
        getMinput: function(){
            return {
            mstaff1: document.querySelector('#mstaff1').value,
            mstaff2: document.querySelector('#mstaff2').value,
            mpda: document.querySelector('#mpda').value,
            mpos: document.querySelector('#mpos').value,
            mcash: document.querySelector('#mcash').value,
            mtotal: document.querySelector('#mtotal').value
            };
        }


        getMinput: function(){
            return {
            mstaff1: document.querySelector('#mstaff1').value,
            mstaff2: document.querySelector('#mstaff2').value,
            mpda: document.querySelector('#mpda').value,
            mpos: document.querySelector('#mpos').value,
            mcash: document.querySelector('#mcash').value,
            mtotal: document.querySelector('#mtotal').value
            };
        }   
    };

})();

【问题讨论】:

  • 看起来你正在返回一个对象,由两个方法组成。
  • 其实,不,只有一种方法,因为你在对象中重复 id。
  • 你想要完成什么?

标签: javascript function object null return


【解决方案1】:

这里你有一个对象。一个对象内的方法不能有相同的名称。此外,您需要在每个方法或道具之后添加“,”。 所以这样做:

(function(){

    return{
        getMinput: function(){
            return {
            mstaff1: document.querySelector('#mstaff1').value,
            mstaff2: document.querySelector('#mstaff2').value,
            mpda: document.querySelector('#mpda').value,
            mpos: document.querySelector('#mpos').value,
            mcash: document.querySelector('#mcash').value,
            mtotal: document.querySelector('#mtotal').value
            };
        },

        getMinput1: function(){
            return {
            mstaff1: document.querySelector('#mstaff1').value,
            mstaff2: document.querySelector('#mstaff2').value,
            mpda: document.querySelector('#mpda').value,
            mpos: document.querySelector('#mpos').value,
            mcash: document.querySelector('#mcash').value,
            mtotal: document.querySelector('#mtotal').value
            };
        }   
    };
    })());

OR if you really need two objects you can use array: 

(function(){
    return [
        getMinput: function(){
            return {
            mstaff1: document.querySelector('#mstaff1').value,
            mstaff2: document.querySelector('#mstaff2').value,
            mpda: document.querySelector('#mpda').value,
            mpos: document.querySelector('#mpos').value,
            mcash: document.querySelector('#mcash').value,
            mtotal: document.querySelector('#mtotal').value
            };
        },


        getMinput1: function(){
            return {
            mstaff1: document.querySelector('#mstaff1').value,
            mstaff2: document.querySelector('#mstaff2').value,
            mpda: document.querySelector('#mpda').value,
            mpos: document.querySelector('#mpos').value,
            mcash: document.querySelector('#mcash').value,
            mtotal: document.querySelector('#mtotal').value
            };
        }   
    ];
  })
());

【讨论】:

  • (key: function, key2: function) 语法无效
【解决方案2】:

一个函数的一次运行不能有两个返回值。这在物理上是不可能的。
但是您可以返回一个 array 值。

     var UIController = (function ... return [ /*whatever porcesing*/ , /*second result */ ]; .. })();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多