Java中Javascript函数闭包的等价物是什么?

时间:2017-07-04 12:32:40

标签: javascript java function closures

虽然Javascript不像Java,但仍然相当于java中的Javascript函数闭包?为什么我们需要关闭?

这是我的理解 1. java中的私有和受保护变量由该类中的所有方法访问。 2.有没有一种方法可以增加一个私有变量,只允许访问Java中一个类中的一个方法? 3.如果第2点的答案为NO,那么为什么JavaScript中的闭包会满足这样的要求? 4.我们在哪里可以面对上述第2点的要求?

1 个答案:

答案 0 :(得分:0)

在java中,你不需要"关闭"。你在函数中所拥有的只是这个函数,你应该尝试不要使用静态的东西。

Java是OO,对象中的所有方法都可以接受对象中的变量。如果您不希望其他对象访问它,请使用" private"标签

//Class
public class HelloWorld(){
  private int var1;
  public String var2;

  // Constructor
  public HelloWorld(){
  }

  public void function1(){
    //here you can use var1 and var2.
  }

  private void function2(){
    //here you can use var1 and var2.
  }

  // If you have a parameter with same name, you should use this
  private void  function3(int var1){
    // this.var1 object variable
    // var1 method variable
  }
}

//From another object:
public class ByeWorld(){

  private HelloWorld anInstanceOfHelloWorld;

  public ByeWorld(){
    anInstanceOfHelloWorld = new HelloWorld();

    // var2 is public you can use it (NO RECOMENDABLE) 
    anInstanceOfHelloWorld.var2;
    anInstanceOfHelloWorld.function1();

    // YOU CANT
    // anInstanceOfHelloWorld.var1 // is private
    // anInstanceOfHelloWorld.function2() // is private
    //...
  }
}

我希望这对你有所帮助。