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

Is there a way to call all functions inside an object in javascript?

本问题已经有最佳答案,请猛点这里访问。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var imgs = {
    a: function(){
        //...
    },
    b: function(){
        //...
    },
    c: function(){
        //...
    }
};
var preloadImgs = function(){
    imgs.a();
    imgs.b();
    imgs.c();
};
preloadImgs();

有没有一种方法可以自动预加载img,这样它就可以一次加载img中的所有方法,而不是我必须键入每个方法?


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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();


使用Object.values

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

演示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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中的所有值都不起作用,则可以先应用过滤器。

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