用javascript调用函数的抽象方法。可以吗?

时间:2016-03-13 02:54:17

标签: javascript performance function user-defined-functions

是否可以通过使用字符串参数来有条件地调用javascript中的函数来指定需要调用的函数的名称?

import javax.swing.Timer;
import javax.swing.*;

import java.awt.*;
import java.util.*;
import java.awt.event.*;
import java.awt.geom.Ellipse2D;
public class Tester {


    static JFrame frame;
    static JPanel panel;
    static JButton button;
    static ArrayList<Ellipse2D.Double> circles = new       ArrayList<Ellipse2D.Double>();

    static void init(){
        frame = new JFrame();
        panel = new JPanel(new BorderLayout());
        button = new JButton("South");
        panel.add(button, BorderLayout.SOUTH);

        frame.add(panel);

        frame.setVisible(true);
        panel.setVisible(true);

        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setSize(500, 500);
        frame.setBackground(Color.LIGHT_GRAY);



}

public static void main(String[] args) {
     init();

class MeteorMover extends JPanel{

         Ellipse2D.Double m;
         int x = 40,y=40;
         boolean isSettingGravity=true;

         public MeteorMover(){
             m = new Ellipse2D.Double(x,y,30,30);

         }

         void createNewMeteor(int n){
            repaint(); 
         }

         void setGravity(){
             isSettingGravity = true;
             for (int i=0;i<circles.size();i++){
                 Ellipse2D.Double m = circles.get(i);
                 m= new Ellipse2D.Double(m.getX(),m.getY()+1,30,30);
                circles.set(i, m);

             }
             repaint();
         }

         protected void paintComponent(Graphics g){
             Graphics2D g2 = (Graphics2D) g;
             g2.setColor(Color.WHITE);
             if (isSettingGravity){
             for (Ellipse2D.Double c:circles){
                g2.draw(c); 
             }
             isSettingGravity = false;
             }
             else{
             m = new Ellipse2D.Double(x,y,30,30);
             circles.add(m);


             g2.fill(m);
             g2.draw(m);

             Random r = new Random();
             x = r.nextInt(500);
             y=r.nextInt(100);
             }

         }

     }

     final MeteorMover m = new MeteorMover();
     panel.add(m);
     panel.repaint();


     class TimerListener implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent arg0) {

             m.createNewMeteor(1);
        }

     }
     TimerListener cListener = new TimerListener();
     Timer timer = new Timer(1000,cListener);
     timer.start();

     class TimerListener2 implements ActionListener{

        @Override
        public void actionPerformed(ActionEvent arg0) {

            m.setGravity();
        }

     }



     TimerListener2 gListener = new TimerListener2();
     Timer gTimer = new Timer(100,gListener);
     gTimer.start();

}

}

2 个答案:

答案 0 :(得分:0)

当然,如果你正确地构造它。您可以使用类似数组(或括号)的表示法:

numpy

答案 1 :(得分:0)

如果functions位于global context,则每个global functionglobal variable都是keywindow对象。

&#13;
&#13;
function test1() {
  alert('Hi!');
}

function test2() {
  alert('Hi!');
}

function test3() {
  alert('Hi!');
}
var callString = 'test1';

window[callString]();
&#13;
&#13;
&#13;