有没有办法在javascript中调用对象内的所有函数?

时间:2018-03-29 09:46:17

标签: javascript object

$(document).ready(function () {
    $('body').on('click','input[type="submit"]',function(e) {
                e.preventDefault();
                console.log($(this).closest('form'));
                $(this).closest('form').submit();
             });
     $('#clone').click(function(e) {
               e.preventDefault();
               $('#myform_1').clone(true).prop('id', 'myform_2' ).appendTo('.clone');
             });

     $(".submit").click(function(){
        $(this).parent().validate({
            rules: {
                field1: {
                    required: true
                },
                field2: {
                    required: true
                }
            },
            submitHandler: function (form) { 
                alert('valid form submitted formId='+$(form).attr("id")); 
                return false; 
            }
        }); 
     });

});

有没有办法自动化preloadImgs,所以它一次加载imgs中的所有方法,而不是每次都要输入一个?

2 个答案:

答案 0 :(得分:1)

使用Object.values

Object.values( imgs ).forEach( s => s() );

<强>演示

var imgs = {
    a: function(){
       console.log("1");
    },
    b: function(){
       console.log("2");
    },
    c: function(){
       console.log("3");
    }
};
var preloadImgs = function(){
    Object.values( imgs ).forEach( s => s() );
};
preloadImgs();

修改

如果img中的所有值都不起作用,则可以先应用过滤器

Object.values( imgs )
  .filter( s => typeof s === 'function' ) //filter out values which are function
  .forEach( s => s() ); //execute those functions

答案 1 :(得分:1)

循环遍历imgs对象的所有值,如果它是函数

则调用它

&#13;
&#13;
var imgs = {
    a: function(){
        console.log('a');
    },
    b: function(){
        console.log('b');
    },
    c: function(){
        console.log('c');
    }
};
var preloadImgs = function(){
    Object.values(imgs).map(value => {
      if(typeof value === 'function') {
          value.call();
      }
    })
};
preloadImgs();
&#13;
&#13;
&#13;